如何将中文十六进制字符串解码为中文字符或JavaScript
How to decode Chinese hex string into Chinese characters or JavaScript?
我正在开发一个Rails应用程序。
我正在使用返回一些中国省份的 API。API 以十六进制字符串返回省份,例如:
{ "'xE5'x8C'x97'xE4'xBA'xAC" => "some data" }
我的JavaScript调用一个返回此哈希的控制器。我把所有的省份字符串都放到一个下拉菜单中,但字符串显示为一个黑色的菱形,中间有一个问号。我想知道如何将 Ruby 十六进制字符串转换为实际的中文字符,北京?或者如果可能的话,我可以将 JavaScript 中的十六进制字符串转换为中文字符吗?
'xE5'x8C'x97
的字节是北
的 UTF-8 表示形式,'xE4'xBA'xAC
是 京
的 UTF-8 表示形式。所以这个字符串:
"'xE5'x8C'x97'xE4'xBA'xAC"
如果字节被解释为 UTF-8,则北京
。您看到的是十六进制代码而不是中文字符,这表明字符串的编码是二进制的:
> s = "'xE5'x8C'x97'xE4'xBA'xAC"
=> "北京"
> s.encoding
=> #<Encoding:UTF-8>
> s.force_encoding('binary')
=> "'xE5'x8C'x97'xE4'xBA'xAC"
因此,您正在与之交谈的这个 API 使用的是 UTF-8,但您的应用程序在某个地方忘记了该字符串应该是什么编码。如果强制编码为 UTF-8,则问题就消失了:
> s.force_encoding('utf-8')
=> "北京"
您应该在应用程序从此远程 API 读取数据的最边缘修复此编码问题。一旦完成,所有内容都应该是明智的 UTF-8,在你关心的任何地方。这应该可以解决您的JavaScript问题,并且JavaScript非常乐意使用UTF-8。
我认为你可以这样做:doc理:
2.1.2 :002 > require 'uri'
=> true
2.1.2 :003 > URI.decode("'xE5'x8C'x97'xE4'xBA'xAC")
=> "北京"
JS: decodeURIComponent(URIstring)
相关文章:
- 在JavaScript中输出转义字符
- 不同浏览器中的空白字符正则表达式行为
- Regex匹配除“”之外的所有字符;.js”;
- 拆分文本以每隔n个字符添加一行新行,并注意空格
- 使用RegExp查找url中的字符
- 具有中文字符但输出的JSON.parse数据变为“;未定义”;
- 如何使用JavaScript注入中文字符
- PHP/html:即时搜索功能:无法搜索外语(例如中文)字符
- 如何将中文十六进制字符串解码为中文字符或JavaScript
- 用于验证字母数字字符、所有国际字符(日语、中文、俄语等)的JavaScript正则表达式
- javascript中文/日文字符解码
- 将Uint8Array转换为javascript中的字符串(带中文字符)
- 我可以检测文本中的非日文中文字符吗?
- JavaScript来替换中文字符
- 无法用javascript和json在我的静态网站上显示中文字符
- 如何使用javascript从url中提取中文字符
- javascript检测输入字符是繁体中文还是简体中文
- 将文本区域限制为固定数量的中文字符
- 当我通过location.search搜索中文时,奇怪的字符
- 使用jQuery在请求头中设置中文字符