簡體   English   中英

將Unicode字符串轉換為UTF-8,然后轉換為JSON

[英]Convert Unicode string to UTF-8, and then to JSON

我想用UTF-8編碼一個字符串,並分別查看相應的UTF-8字節。 在Python REPL中,以下似乎工作正常:

>>> unicode('©', 'utf-8').encode('utf-8')
'\xc2\xa9'

請注意,我在這里使用U + 00A9 COPYRIGHT SIGN作為示例。 '\\xC2\\xA9'看起來接近我想要的 - 一個由兩個獨立代碼點組成的字符串:U + 00C2和U + 00A9。 (當UTF-8解碼時,它會返回原始字符串'\\xA9' 。)

然后,我希望將UTF-8編碼的字符串轉換為JSON兼容的字符串。 但是,以下似乎沒有做我想要的:

>>> import json; json.dumps('\xc2\xa9')
'"\\u00a9"'

請注意,它會生成一個包含U + 00A9(原始符號)的字符串。 相反,我需要UTF-8編碼的字符串,它在有效的JSON中看起來像"\Â\©"

TL; DR如何在Python "\Â\©" '©'變成"\Â\©" 我覺得我錯過了一些明顯的東西 - 有沒有內置的方法來做到這一點?

如果你真的想要"\Â\©"作為輸出,請給json一個Unicode字符串作為輸入。

>>> print json.dumps(u'\xc2\xa9')
"\u00c2\u00a9"

您可以從原始字節生成此Unicode字符串:

s = unicode('©', 'utf-8').encode('utf-8')
s2 = u''.join(unichr(ord(c)) for c in s)

我認為你真正想要的是"\\xc2\\xa9"作為輸出,但我不知道如何生成它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM