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

使用arabic_reshaper显示阿拉伯字母出现??异常的技术求助

终端显示阿拉伯文为??的问题分析与解决办法

问题原因

  • 终端对阿拉伯文(RTL从右到左语言)的渲染支持不足:多数默认终端(如Windows旧版cmd、部分Linux终端)无法正确解析阿拉伯文的字符连接和排版逻辑,即便文本经过整形,也会显示乱码或??。
  • 终端编码未设置为UTF-8:如果终端字符编码不是UTF-8,无法识别UTF-8格式的阿拉伯文字符。
  • 缺少阿拉伯文支持字体:终端没有安装能显示阿拉伯文的字体,导致字符无法渲染。

解决步骤

1. 切换终端编码为UTF-8

  • Linux/macOS:在终端执行以下命令临时设置,或者写入~/.bashrc/~/.zshrc文件永久生效:
    export LC_ALL=en_US.UTF-8
    export LANG=en_US.UTF-8
    
  • Windows:使用PowerShell时执行chcp 65001切换到UTF-8;推荐使用Windows Terminal,它默认已支持UTF-8,可在设置中确认。

2. 更换支持RTL的终端

  • Linux:使用GNOME Terminal、Konsole这类原生支持RTL渲染的终端工具。
  • macOS:在Terminal.app或iTerm2的偏好设置「高级」选项中,开启「使用Unicode双向算法」。
  • Windows:优先使用Windows Terminal,它对RTL语言的兼容性远优于旧版cmd。

3. 安装阿拉伯文支持字体

  • Linux(Debian/Ubuntu):执行sudo apt install fonts-arabic安装阿拉伯文字体包,或者安装通用的Noto Sans Arabic字体。
  • macOS/Windows:直接安装Noto Sans Arabic字体,可从系统字体库或官方渠道获取。

4. 配合python-bidi完成RTL排版

arabic_reshaper仅负责字符整形,还需要python-bidi处理从右到左的排版顺序,才能让终端正确显示。操作如下:

先安装依赖:

pip install arabic-reshaper python-bidi

修改后的代码:

import arabic_reshaper
from bidi.algorithm import get_display

def process_arabic_text(input_text):
    # 整形阿拉伯文字符
    reshaped_text = arabic_reshaper.reshape(input_text)
    # 处理RTL排版顺序
    display_text = get_display(reshaped_text)
    return display_text

if __name__ == "__main__":
    input_text = "بسم الله الرحمن الرحیم"
    
    display_text = process_arabic_text(input_text)
    
    print("原始阿拉伯文本:")
    print(input_text)
    
    print("\n处理后的阿拉伯文本:")
    print(display_text)

内容的提问来源于stack exchange,提问作者Pouya Vaghefi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 02:46:07