You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何修复Python中波斯语字母与数字组合的显示混乱问题

解决Windows下Python输出波斯语与数字混合显示混乱问题

问题详情

  • 输出异常:波斯语字母与数字组合的文本顺序错乱,例如正确应为123B456的内容显示为456b123,实际输出示例为۹۷ج۴۶۱۷۷
  • 环境限制:仅在**Windows系统(Python 3.6.13)**中出现,Linux平台无此问题
  • 涉事代码:
with open("output/mojaz1.csv", "r", newline="", encoding="utf-8") as mojaz:
    reader = csv.reader(mojaz)
    mojazha = list(reader)
    print(mojazha)

解决方案

该问题源于Windows默认控制台对双向文本(BiDi)的渲染缺陷,以下是几种可行的解决方式:

1. 插入Unicode双向控制字符

在混合文本前后添加Unicode控制符,强制终端按正确方向解析文本:

  • \u200F:强制开启从右到左渲染(适配波斯语)
  • \u200E:重置为从左到右渲染(适配数字)
    修改代码如下:
import csv

with open("output/mojaz1.csv", "r", newline="", encoding="utf-8") as mojaz:
    reader = csv.reader(mojaz)
    mojazha = list(reader)
    # 对每个含波斯语与数字的元素添加控制符
    for row in mojazha:
        corrected_items = [f'\u200F{item}\u200E' for item in row]
        print(corrected_items)

2. 更换现代终端

使用Windows Terminal、ConEmu等支持双向文本渲染的终端替代Windows默认控制台,这类终端对右左混合文本的解析逻辑更完善,无需修改代码即可正常显示。

3. 升级Python版本

Python 3.6已停止维护,升级至3.8及以上版本,新版本对Windows平台的Unicode文本处理做了优化,可能直接解决该显示问题。

内容的提问来源于stack exchange,提问作者keyvan doostkam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 08:48:21