文本文件在Scite编辑器中正确编码为utf-8,但在ruby中无法编码为uft-8
我有一个文本文件,如果在Scite编辑器中查看时将编码设置为文本文件在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编辑器中成功
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
编码的误解
查看文档,您有两个选择:
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
编码的误解
查看文档,您有两个选择:
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上面的评论我可以提供一个链接到文本文件tonightYourtown\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编码文本,因此一切都变得混乱。