【问题标题】:Write Unicode character with integer value to text file in Python 2在 Python 2 中将具有整数值的 Unicode 字符写入文本文件
【发布时间】:2016-05-31 09:25:12
【问题描述】:
  1. 在 Python 2 中,我想将整数值为 k 的 Unicode 字符写入文本文件。

我该怎么做?

(例如,对于 ASCII,如果我想写入值为 65 的字符,在文本文件中它应该显示为 'A')。

  1. 之后,我应该如何将文件读回整数值?

  2. 最后一个问题,一共有多少个Unicode字符? (据我所知,Unicode 字母不止一种,比如 UTF-8、UTF-16 等)

非常感谢

【问题讨论】:

  • 只有一个 unicode(大约 120、000 个字符)。它以多种方式编码 ljke utf-8, utf-16 用于存储。要将 int 转换为 unicode char,请使用 unichr( k )
  • 将您的问题限制为每个问题一个问题(以便它们更适用于其他问题)。

标签: python unicode


【解决方案1】:
  1. 您不能将 Unicode 代码点写入文本文件。它们必须被编码。 UTF-8、UTF-16 和 UTF-32 是支持全部 Unicode 码位的编码。 unichr() 是将整数转换为 Unicode 代码点的函数。请注意,如果您不指定,Python 2 将默认使用取决于您的操作系统的编码,但它不能写入 all Unicode 字符,除非该默认值是 UTF 之一编码。

创建一个 Unicode 字符:

k = 65
u = unichr(k)

将其写入以 UTF-8 编码的文件:

import io
with io.open('output.txt','w',encoding='utf8') as f:
    f.write(u)
  1. ord() 会将字符转换回整数。

示例(确保使用与写入相同的编码打开):

import io
with io.open('output.txt',encoding='utf8') as f:
u = f.read()
k = ord(u)
  1. Unicode 代码点范围从 U+0000 到 U+10FFFF。并非所有代码点都已定义,但该范围内有 1,114,112 个可能的值。

【讨论】:

    猜你喜欢
    • 2012-08-30
    • 2019-09-04
    • 2016-11-09
    • 2012-07-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多