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

阿拉伯字符CID映射解码问题:字符替换错误与空格异常求助

阿拉伯字符CID映射解码问题修复

问题说明

使用提供的Python代码解码阿拉伯字符CID映射字符串时,出现字符替换错误、空格重复,且最终输出顺序完全不符合预期,正确输出应为جيهان عزت صقر عبد الحكم。

错误原因分析

  1. CID匹配逻辑缺陷:代码固定截取9个字符匹配CID,但部分CID(如(cid:3))仅7个字符,导致匹配失败,后续字符偏移错误,替换失效。
  2. 空格重复添加:处理(cid:3)时,既添加了映射的空格,又额外追加一个空格,导致空格数量翻倍。
  3. 反转逻辑错误:直接反转整个字符串会同时反转词内字符和词的顺序,破坏阿拉伯语书写规则——阿拉伯语需先将视觉顺序的词转为逻辑顺序(反转词内字符),再调整词的排列顺序。
  4. 字符映射形态错误:原映射使用了上下文相关的连写形态字符(如ـا、هـ),这些字符无法由系统自动处理连写,导致显示异常。

修复后的代码

import re

# 修正字符映射:使用标准阿拉伯字符,替换上下文相关的连写形态
char_code_mapping = {
    "(cid:993)": "م",
    "(cid:987)": "ك",
    "(cid:931)": "ح",
    "(cid:991)": "ل",
    "(cid:909)": "ا",
    "(cid:937)": "د",
    "(cid:913)": "ب",
    "(cid:971)": "ع",
    "(cid:941)": "ر",
    "(cid:984)": "ق",
    "(cid:955)": "ص",
    "(cid:917)": "ت",
    "(cid:943)": "ز",
    "(cid:997)": "ن",
    "(cid:910)": "ا",
    "(cid:1004)": "ه",
    "(cid:1011)": "ي",
    "(cid:927)": "ج",
    "(cid:3)": " ",
}

line = "(cid:993)(cid:987)(cid:931)(cid:991)(cid:909)(cid:3)(cid:937)(cid:913)(cid:971)(cid:3)(cid:941)(cid:984)(cid:955)(cid:3)(cid:917)(cid:943)(cid:971)(cid:3)(cid:997)(cid:910)(cid:1004)(cid:1011)(cid:927)"

# 使用正则匹配所有CID格式字符串,避免固定长度匹配的缺陷
cid_pattern = re.compile(r'\(cid:\d+\)')
cid_matches = cid_pattern.findall(line)

# 解码得到视觉顺序的字符串
visual_text = ''.join([char_code_mapping.get(match, match) for match in cid_matches])

# 处理阿拉伯语顺序:
# 1. 按空格分割成词
# 2. 反转每个词的字符,将视觉顺序转为逻辑顺序
# 3. 反转词列表,调整词的排列顺序以符合正确的显示逻辑
words = visual_text.split()
logic_words = [word[::-1] for word in words]
final_text = ' '.join(reversed(logic_words))

# 写入文件
output_path = "decoded_output.txt"
with open(output_path, "w", encoding="utf-8") as f:
    f.write(final_text)
print(f"解码后的阿拉伯文本已保存至 {output_path}")

修复说明

  1. 正则匹配CID:使用re.compile(r'\(cid:\d+\)')匹配所有格式的CID,无论数字位数多少,确保全部正确捕获。
  2. 修正空格处理:仅保留映射中的单个空格,去掉额外添加的空格。
  3. 调整反转逻辑:先按空格分割词,反转每个词的字符(将视觉顺序转为逻辑顺序),再反转词列表,确保最终字符串的存储顺序符合阿拉伯语双向文本显示规则。
  4. 修正字符映射:替换上下文相关的连写形态字符为标准阿拉伯字符,由Unicode双向文本算法自动处理连写显示。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 01:22:04