将 unicode 字符编码为 un​​icode 转义序列

encode unicode characters to unicode escape sequences

我有一个包含网站和地址的 CSV 文件。我需要处理此文件以生成一个 json 文件,我将在 Django 中使用该文件将初始数据加载到我的数据库中。为此,我需要将 CSV 文件中的所有特殊字符转换为 unicode 转义字符。

这是一个例子:

Örnsköldsvik;SE;Ornskoldsvik;Ångermanlandsgatan 28 A

应转换为:

\u00D6rnsk\u00F6ldsvik;SE;Ornskoldsvik;\u00C5ngermanlandsgatan 28 A

以下站点正在执行我期望的转换:http://itpro.cz/juniconv/ 但我想找到一种从命令行 (bash) 或在 [=28 中执行此操作的方法=].我已经尝试使用 iconvuconv 和一些 python 脚本但没有真正成功。

juniconv网站背后的运行是什么样的脚本?

提前感谢您的任何建议。

也许这样的事情对你有帮助?我假设你有一个 utf-8 字符串...

import csv
csv_reader = csv.reader(utf8_data)
for row in csv_reader:
    encoded_row = [unicode(cell, 'utf-8') for cell in row]
    #print(encoded_row)

如果你想得到Unicode escapes similar to Java in Python; you could use JSON format:

>>> import json
>>> import sys
>>> s = u'Örnsköldsvik;SE;Ornskoldsvik;Ångermanlandsgatan 28 A'
>>> json.dump(s, sys.stdout)
"\u00d6rnsk\u00f6ldsvik;SE;Ornskoldsvik;\u00c5ngermanlandsgatan 28 A"

还有 unicode-escape 编解码器,但你不应该使用它:它会产生 Python 特定的转义(Python Unicode 字符串文字的样子):

>>> print s.encode('unicode-escape')
\xd6rnsk\xf6ldsvik;SE;Ornskoldsvik;\xc5ngermanlandsgatan 28 A

您可以使用 GNU libiconv 的 --unicode-subst 选项:

$ echo 'Örnsköldsvik;SE;Ornskoldsvik;Ångermanlandsgatan 28 A' | \
  iconv -t ASCII --unicode-subst='\u%04X'
\u00D6rnsk\u00F6ldsvik;SE;Ornskoldsvik;\u00C5ngermanlandsgatan 28 A

顺便说一句,GNU libiconv 也有一个名为 JAVA 的伪编码,可以执行此操作:

$ echo 'Örnsköldsvik;SE;Ornskoldsvik;Ångermanlandsgatan 28 A' | \
  iconv -t JAVA
\u00d6rnsk\u00f6ldsvik;SE;Ornskoldsvik;\u00c5ngermanlandsgatan 28 A

注意:GNU libiconv 不是 glibc 中包含的 iconv。它是一个单独的包,通常不会安装在 glibc 系统上,因为 glibc 的 iconv 对于 99% 的用途来说都一样好。

您始终可以使用 Visual Studio 代码并安装 ascii-unicode-escape 扩展。安装后,您可以使用 Ctrl-Shift-P 和 运行 'Escape non-ASCII characters' 命令。