将 unicode 字符编码为 unicode 转义序列
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 中执行此操作的方法=].我已经尝试使用 iconv
、uconv
和一些 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' 命令。
我有一个包含网站和地址的 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 中执行此操作的方法=].我已经尝试使用 iconv
、uconv
和一些 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' 命令。