文本文件在Scite编辑器中正确编码为utf-8,但在ruby中无法编码为uft-8

文本文件在Scite编辑器中正确编码为utf-8,但在ruby中无法编码为uft-8,ruby,encoding,utf-8,character-encoding,Ruby,Encoding,Utf 8,Character Encoding,我有一个文本文件,如果在Scite编辑器中查看时将编码设置为utf-8,它将正确显示所有文本,包括带有accute重音的大写字母(即Á) 但是,如果我编写一个ruby脚本并使用mystring.encode(“utf-8”),它会在带有尖锐重音的大写字母(即Á)上出现以下错误: encode':“\x81”在从Windows-1252到UTF-8的转换中转换为UTF-8(编码::未定义的转换器错误) 这是预期的行为吗?我如何使用ruby将整个文本编码为utf-8,否则它会在Scite编辑器中成功

我有一个文本文件,如果在Scite编辑器中查看时将编码设置为
utf-8
,它将正确显示所有文本,包括带有accute重音的大写字母(即Á)

但是,如果我编写一个ruby脚本并使用
mystring.encode(“utf-8”)
,它会在带有尖锐重音的大写字母(即Á)上出现以下错误:

encode':“\x81”在从Windows-1252到UTF-8的转换中转换为UTF-8(编码::未定义的转换器错误)

这是预期的行为吗?我如何使用ruby将整个文本编码为
utf-8
,否则它会在Scite编辑器中成功编码

代码:


这似乎是对
ine\u西班牙\u demographics.csv
编码的误解

查看文档,您有两个选择:

  • 在encode中使用
    replace
    告诉Ruby使用哪个字符
    town\u name.encode(“utf-8”,replace:”)
  • 识别正确的文件编码并指定它:
    file.open(“../../../\u data/ine\u西班牙\u demographics.csv”,“r:ISO-8859-1”)

  • 这似乎是对
    ine\u西班牙\u demographics.csv
    编码的误解

    查看文档,您有两个选择:

  • 在encode中使用
    replace
    告诉Ruby使用哪个字符
    town\u name.encode(“utf-8”,replace:”)
  • 识别正确的文件编码并指定它:
    file.open(“../../../\u data/ine\u西班牙\u demographics.csv”,“r:ISO-8859-1”)

  • 您说
    ine_文件。外部_编码
    表示
    Windows-1252
    ,因此该文件将作为Windows-1252编码文件打开。然后你说
    town\u name.encode(“utf-8”)
    ,试图将字符串编码为utf-8和Ruby抱怨的字符串。但文件实际上是UTF-8;将UTF-8字节读取为Windows-1252,然后尝试将这些字节重新编码为UTF-8是行不通的

    您需要以UTF-8模式打开文件:

    File.open("../../_data/ine_spain_demographics.csv", 'r:UTF-8')
    

    停止尝试更改
    town\u name
    的编码,按原样使用
    town\u name

    您说的是
    ine\u文件。外部\u编码显示的是
    Windows-1252
    ,因此该文件将作为Windows-1252编码文件打开。然后你说
    town\u name.encode(“utf-8”)
    ,试图将字符串编码为utf-8和Ruby抱怨的字符串。但文件实际上是UTF-8;将UTF-8字节读取为Windows-1252,然后尝试将这些字节重新编码为UTF-8是行不通的

    您需要以UTF-8模式打开文件:

    File.open("../../_data/ine_spain_demographics.csv", 'r:UTF-8')
    

    停止尝试更改
    town\u name
    的编码,按原样使用
    town\u name

    今晚我可以提供指向文本文件的链接。您的
    town\u name.encode(“utf-8”)
    调用有点可疑,因为您说该文件已经是utf-8。
    ine_文件。外部_编码
    要说什么?@mu_是ine_文件的缩写
    ine_文件。外部_编码>>Windows-1252
    我想编码到UTF-8,它在Scite中工作得很好apparently@muistooshort上面的评论我可以提供一个链接到文本文件tonightYour
    town\u name.encode(“utf-8”)
    调用有点可疑,因为您说文件已经是UTF-8。
    ine_文件。外部_编码
    要说什么?@mu_是ine_文件的缩写
    ine_文件。外部_编码>>Windows-1252
    我想编码到UTF-8,它在Scite中工作得很好apparently@muistooshort上面的评论我猜@Travis,问题是Scite的编码函数比ruby的更高级,因为Scite可以整齐地编码到utf-8中,而ruby在大写的锐重音字符方面存在问题-我猜@Travis,问题在于Scite的编码功能比ruby的更高级,因为Scite可以整齐地编码到utf-8中,而ruby在大写的锐重音字符方面有问题-“但文件实际上是UTF-8”,为什么?你怎么知道这个文件是UTF-8,你说的是
    ine_西班牙_demographics.csv
    文件吗?
    ine_西班牙_demographics.csv
    是我们谈论的唯一文件,你说“编码设置为UTF-8的Scite编辑器,正确显示所有文本”,所以文件的字节大概代表UTF-8编码文本。但是
    external_encoding
    说,当你打开文件时,它被视为1252编码文本,所以一切都乱七八糟。“但是文件实际上是UTF-8”,为什么?你怎么知道这个文件是UTF-8,你说的是
    ine_西班牙_demographics.csv
    文件吗?
    ine_西班牙_demographics.csv
    是我们谈论的唯一文件,你说“编码设置为UTF-8的Scite编辑器,正确显示所有文本”,所以文件的字节大概代表UTF-8编码文本。但是
    external_encoding
    表示,当您打开文件时,该文件将被视为1252编码文本,因此一切都变得混乱。