javascript - 如何将中文十六进制字符串解码为汉字或JavaScript?

标签 javascript ruby-on-rails ruby string encoding

我正在开发 Rails 应用。

我正在使用返回一些中国省份的 API。 API 以十六进制字符串返回省份,例如:

{ "\xE5\x8C\x97\xE4\xBA\xAC" => "some data" }

我的 JavaScript 调用一个返回此散列的 Controller 。我将所有省份字符串放入下拉列表中,但字符串显示为中间带有问号的黑色菱形。我想知道如何将 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,但您的应用程序在某处丢失了该字符串应该采用的编码方式。如果你force the encoding成为 UTF-8 那么问题就消失了:

> s.force_encoding('utf-8')
 => "北京" 

您应该在应用程序从该远程 API 读取数据的最边缘解决此编码问题。一旦完成,所有你关心的地方都应该是合理的 UTF-8。这应该可以解决您的 JavaScript 问题,而且 JavaScript 很乐意使用 UTF-8。

关于javascript - 如何将中文十六进制字符串解码为汉字或JavaScript?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27116725/

相关文章:

javascript - 日文、英文标签(如 Twitter)的正则表达式

ruby-on-rails - 回形针 aws-sdk 错误 : uninitialized constant

javascript - 删除表单标签中的 novalidate

ruby - 是否有 Ruby dealloc 方法?

ruby - 用Ruby计算并排字母的最大数量

ruby - Camping 在哪里存储我的数据库?

javascript - 在 ember.js 中实现一个 "conditional"后退按钮

javascript - 如何使用带有列表布局布局的 WinJS.UI.ListView 实现组

javascript - 不要在特定页面上应用 css

ruby-on-rails - Rails 如何在多级关联上检索 act-as-taggable-on 标签