【问题标题】:Python: raw_unicode_escape doesn't write raw value for "é"Python:raw_unicode_escape 不会为“é”写入原始值
【发布时间】:2012-09-11 22:21:31
【问题描述】:

有一个可爱的脚本,它以原始 unicode 打印出一堆文本来处理所有不同的语言。

脚本在 ascii carater 和非拉丁语言(印地语、中文等)中运行良好

但是它无法打印出诸如“锓è”等字符的原始值......

而不是在文件中的 print "é" 中打印原始 unicode 值 \u00E9,这反过来会在网页上显示菱形询问标记。

f = codecs.open(newFilePathAndName(path,filename,language),encoding='raw_unicode_escape', mode='w')
...
f.write(outputString)

当我在脚本中执行“打印”时,它会将字符 é 显示为 \xe9

有什么想法吗?

唯一想到的是放置一个正则表达式,将 \xe 替换为 \u00

【问题讨论】:

  • 读取数据时,使用正确的编解码器对数据进行解码。在 Python 2 中您将得到一个 unicode 对象或在 Python 3 中得到一个 str 对象。写入数据时,请使用适当的编解码器对其进行编码。当您在某处显示数据时,了解此显示设备需要哪种编解码器非常重要。
  • 另外,您应该提供一个工作的最小代码示例。在您的示例中,我看不到 outputString 的来源。

标签: python unicode encoding


【解决方案1】:

raw_unicode_escape 编码确实不为低于 0xFF 的值提供转义;这些值通常不会在原始 python unicode 文字中转义。

改用unicode_escape 编码:

>>> print u'\u00e9'.encode('unicode_escape')
\xe9

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-06
    • 2021-12-23
    • 1970-01-01
    • 2020-01-02
    • 1970-01-01
    相关资源
    最近更新 更多