Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 757:意外令牌a t';{(JSON::ParserError)_Ruby - Fatal编程技术网

Ruby 757:意外令牌a t';{(JSON::ParserError)

Ruby 757:意外令牌a t';{(JSON::ParserError),ruby,Ruby,在运行Ruby脚本时,我遇到了一个解析器错误,该脚本从JSON文件生成翻译后的HTML文件。JSON文件的编码是ISO-8859-1,但在运行Ruby代码时,我得到了以下结果: :marker=>true} C:/Ruby200/lib/ruby/2.0.0/json/common.rb:155:in `parse': 757: unexpected token a t '{ (JSON::ParserError) "de_DE": { "1": "HE

在运行Ruby脚本时,我遇到了一个解析器错误,该脚本从JSON文件生成翻译后的HTML文件。JSON文件的编码是ISO-8859-1,但在运行Ruby代码时,我得到了以下结果:

:marker=>true}
C:/Ruby200/lib/ruby/2.0.0/json/common.rb:155:in `parse': 757: unexpected token a
t '{ (JSON::ParserError)
    "de_DE": {
        "1": "HERBST 2013",
        "2": "STILSICHER",
                "3": "Klassisch geschnittene Anzüge",
                "4": "PERFEKT KOMBINIERT",
                "5": "Business hemden mit klasse",
                "6": "HERBST 2013",
                "7": "CASUAL BIS COCKTAIL",
                "8": "Vielseitige Kleider",
                "9": "SPORTIV BIS ELEGANT",
                "10": "Mäntel mit Anspruch",
                "11": "ELEGANZ NACH MASS",
                "12": "Unverwechselbare",
                "13": "PASSGENAU",
                "14": "Perfekt geschnittene Blazer"
    },
    "en_GB": {
        "1": "FALL 2013",
        "2": "PURE STYLE",
...............
是因为某种原因改变了外文字符吗

在ruby脚本中,我有:

translation_hash = JSON.parse(File.read('translation_master.json').force_encoding("ISO-8859-1").encode("utf-8", replace: nil))

此处的json文件:


您是否以UTF8格式读取文件?除非另有说明,否则Ruby 1.9将假定文件为UTF-8

JSON.parse open("input.json", "r:iso-8859-1:utf-8").read
这将指定该文件包含ISO-8859-1编码,然后在读取时将其转码为UTF-8


如果您可以提供一个测试文件,那么帮助调试可能会更容易。

您是否以UTF8的形式读取该文件?除非另有说明,否则Ruby 1.9将假定该文件为UTF-8

JSON.parse open("input.json", "r:iso-8859-1:utf-8").read
这将指定该文件包含ISO-8859-1编码,然后在读取时将其转码为UTF-8

如果您可以提供一个测试文件,那么帮助调试可能会更容易。

首先,这家伙是我在这里所说内容的作者

一些背景

Latin1是MySQL使用的字符编码。人们错误地认为它等同于ISO-8859-1,但事实并非如此,它实际上是CP-1252(也称为Windows-1252)。CP-1252是ISO-8859-1的超集,带有一些附加字符(最近包括欧元符号)

尝试应用以下方法:

def fix_cp1252_utf8(text)
    text.encode('cp1252',
        :fallback => {
            "\u0081" => "\x81".force_encoding("cp1252"),
            "\u008D" => "\x8D".force_encoding("cp1252"),
            "\u008F" => "\x8F".force_encoding("cp1252"),
            "\u0090" => "\x90".force_encoding("cp1252"),
            "\u009D" => "\x9D".force_encoding("cp1252")
          })
  .force_encoding("utf-8")
end
请看这里:

首先,这家伙是我在这里所说内容的作者

一些背景

Latin1是MySQL使用的字符编码。人们错误地认为它等同于ISO-8859-1,但事实并非如此,它实际上是CP-1252(也称为Windows-1252)。CP-1252是ISO-8859-1的超集,带有一些附加字符(最近包括欧元符号)

尝试应用以下方法:

def fix_cp1252_utf8(text)
    text.encode('cp1252',
        :fallback => {
            "\u0081" => "\x81".force_encoding("cp1252"),
            "\u008D" => "\x8D".force_encoding("cp1252"),
            "\u008F" => "\x8F".force_encoding("cp1252"),
            "\u0090" => "\x90".force_encoding("cp1252"),
            "\u009D" => "\x9D".force_encoding("cp1252")
          })
  .force_encoding("utf-8")
end
请看这里:


查看更新后的帖子我也添加了ruby fiddle,这样你就可以看到ruby代码,顺便说一下,我是一名前端开发人员,对ruby一点都不了解。你能提供一个失败的JSON翻译文件的原始示例吗?提供的数据是UTF-8。你的ä被编码为一个双字节字符,
303274
,表示UTF-8O-8859-1,这将是一个单字节,
228
。有关hexdump,请参阅。将其强制为ISO-8859-1将破坏编码。只需删除您的
force_编码
encode
内容,您就可以了。我删除了此内容,但仍然会得到相同的错误。force_编码(“ISO-8859-1”)。encode(“utf-8”,替换为:nil)
JSON.parse(打开(“data.JSON”,“r”).read)
在这里使用提供的数据可以很好地工作。可能错误在其他地方?请参阅更新的帖子,我也添加了一个ruby提琴,这样您就可以看到ruby代码,顺便说一下,我是一个前端开发人员,根本不懂ruby。您能提供一个失败的JSON翻译文件的原始示例吗?提供的数据是UTF-8。您的ä编码为一个双字节字符,
303274
,表示UTF-8。在ISO-8859-1中,这将是一个单字节,
228
。请参阅hextdump。强制它到ISO-8859-1将破坏编码。只需删除
强制编码
编码
之类的内容,您应该会没事。我删除了它,但仍然得到相同的e错误。强制编码(“ISO-8859-1”)。编码(“utf-8”,替换为:nil)
JSON.parse(打开(“data.JSON”,“r”).read)
在这里使用提供的数据可以很好地工作。可能错误在其他地方?请阅读并提供复制问题的JSON摘要示例。不要链接到它,因为链接腐烂最终会使您的问题变得毫无价值。根据,您的JSON无效。请阅读并提供JS摘要示例这会复制问题。不要链接到它,因为链接腐烂最终会使您的问题变得毫无价值。根据,您的JSON无效。虽然此链接可能会回答问题,但最好在此处包含答案的基本部分,并提供链接供参考。如果链接页面c更改。很抱歉,我会这样做。虽然此链接可以回答问题,但最好在此处包含答案的基本部分,并提供链接供参考。如果链接页面发生更改,则仅链接的答案可能无效。很抱歉,我会这样做。