我正在制作一个javascript应用程序,它.json使用jquery 检索文件并将数据注入其嵌入的网页中.
这些.json文件采用UTF-8编码,并包含重音字符,如é,ö和å.
问题是我不控制将要使用该应用程序的页面上的charset.
有些人将使用UTF-8,但其他人将使用iso-8859-1 charset.这当然会从.json文件中剔除特殊字符.
如何使用javascript将特殊的UTF-8字符转换为iso-8859-1等效字符?
我已经下载了 json 和我的对话存档。我坚持使用奇怪的编码。
\n\njson 示例:
\n\n{\n "sender_name": "Micha\\u00c5\\u0082",\n "timestamp": 1411741499,\n "content": "b\\u00c4\\u0099d\\u00c4\\u0099",\n "type": "Generic"\n},\nRun Code Online (Sandbox Code Playgroud)\n\n它应该是这样的:
\n\n{\n "sender_name": "Micha\xc5\x82",\n "timestamp": 1411741499,\n "content": "b\xc4\x99d\xc4\x99",\n "type": "Generic"\n},\nRun Code Online (Sandbox Code Playgroud)\n\n我正在尝试像这样反序列化它:
\n\nvar result = File.ReadAllText(jsonPath, encodingIn);\nJavaScriptSerializer serializer = new JavaScriptSerializer();\nserializer.MaxJsonLength = Int32.MaxValue;\nvar conversation = serializer.Deserialize<Conversation>(System.Net.WebUtility.HtmlDecode(result));\nRun Code Online (Sandbox Code Playgroud)\n\n不幸的是输出是这样的:
\n\n{\n "sender_name": "Micha\xc3\x85\\u0082",\n "timestamp": 1411741499,\n "content": "b\xc3\x84\\u0099d\xc3\x84\\u0099",\n "type": "Generic"\n},\nRun Code Online (Sandbox Code Playgroud)\n\n有人知道 Facebook 如何编码 json 吗?我尝试了多种方法但没有结果。
\n\n感谢您的帮助。
\n我的 json 文件中有以下文本:
\n\n"\\u00d7\\u0090\\u00d7\\u0097\\u00d7\\u0095\\u00d7\\u0096\\u00d7\\u00aa \n\\u00d7\\u00a4\\u00d7\\u0095\\u00d7\\u009c\\u00d7\\u0092"\nRun Code Online (Sandbox Code Playgroud)\n\n它表示希伯来语中的文本“\xd7\x90\xd7\x97\xd7\x95\xd7\x96\xd7\xaa \xd7\xa4\xd7\x95\xd7\x9c\xd7\x92”。
\n\n无论我使用哪种编码/解码,我似乎都无法正确使用 Python 3。
\n\n例如,如果我尝试:
\n\ntext = "\\u00d7\\u0090\\u00d7\\u0097\\u00d7\\u0095\\u00d7\\u0096\\u00d7\\u00aa \n\\u00d7\\u00a4\\u00d7\\u0095\\u00d7\\u009c\\u00d7\\u0092".encode(\'unicode-escape\')\n\nprint(text)\nRun Code Online (Sandbox Code Playgroud)\n\n我得到的文字是:
\n\nb\'\\\\xd7\\\\x90\\\\xd7\\\\x97\\\\xd7\\\\x95\\\\xd7\\\\x96\\\\xd7\\\\xaa \\\\xd7\\\\xa4\\\\xd7\\\\x95\\\\xd7\\\\x9c\\\\xd7\\\\x92\'\nRun Code Online (Sandbox Code Playgroud)\n\n如果我能够仅删除一个反斜杠并转过来,这在字节码中几乎是正确的文本
\n\nb\'\\\\xd7\\\\x90\\\\xd7\\\\x97\\\\xd7\\\\x95\\\\xd7\\\\x96\\\\xd7\\\\xaa \\\\xd7\\\\xa4\\\\xd7\\\\x95\\\\xd7\\\\x9c\\\\xd7\\\\x92\'\nRun Code Online (Sandbox Code Playgroud)\n\n进入
\n\ntext = b\'\\xd7\\x90\\xd7\\x97\\xd7\\x95\\xd7\\x96\\xd7\\xaa \\xd7\\xa4\\xd7\\x95\\xd7\\x9c\\xd7\\x92\'\nRun Code Online (Sandbox Code Playgroud)\n\n(注意我如何将双斜杠更改为单斜杠)然后
\n\ntext.decode(\'utf-8\')\nRun Code Online (Sandbox Code Playgroud)\n\n将产生正确的希伯来语文本。
\n\n但我正在努力这样做,并且无法设法创建一段代码来为我做到这一点(而不是像我刚刚展示的那样手动......)
\n\n非常感谢任何帮助...
\n我下载了一个 facebook 消息数据集,它的格式如下:
f\u00c3\u00b8rste student
Run Code Online (Sandbox Code Playgroud)
它应该是,første student但我似乎无法正确解码它。
我试过:
str = 'f\u00c3\u00b8rste student'
print(str)
# 'første student'
str = 'f\u00c3\u00b8rste student'
print(str.encode('utf-8'))
# b'f\xc3\x83\xc2\xb8rste student'
Run Code Online (Sandbox Code Playgroud)
但它没有用。
我正在解析的 JSON 文件中的值之一是Wroc\u00c5\u0082aw. 我怎样才能把这个字符串变成一个 unicode 对象,产生“Wroc?aw”(在这种情况下是正确的解码)?
我想打印像这样编码的字符串:"Cze\u00c5\u009b\u00c4\u0087"但我不知道怎么做.示例字符串应打印为:"Cześć".
我试过的是:
str = "Cze\u00c5\u009b\u00c4\u0087"
print(str)
#gives: CzeÅÄ
str_bytes = str.encode("unicode_escape")
print(str_bytes)
#gives: b'Cze\\xc5\\x9b\\xc4\\x87'
str = str_bytes.decode("utf8")
print(str)
#gives: Cze\xc5\x9b\xc4\x87
Run Code Online (Sandbox Code Playgroud)
哪里
print(b"Cze\xc5\x9b\xc4\x87".decode("utf8"))
Run Code Online (Sandbox Code Playgroud)
给出"Cześć",但我不知道如何将"Cze\xc5\x9b\xc4\x87"字符串转换为b"Cze\xc5\x9b\xc4\x87"字节.
我也知道在使用"unicode_escape"参数编码基础字符串后,问题是字节表示中的额外反斜杠,但我不知道如何摆脱它们 - str_bytes.replace(b'\\\\', b'\\')不起作用.