Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.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中不正确的编码字符串?_Ruby_String_Character Encoding - Fatal编程技术网

如何更正Ruby中不正确的编码字符串?

如何更正Ruby中不正确的编码字符串?,ruby,string,character-encoding,Ruby,String,Character Encoding,例如,我们需要第三方库来解析和获取文件元数据。但是该方法将通过utf-8对所有元数据进行解码,即使元数据采用另一种编码,它也会返回一个utf-8编码的字符串。lib不支持任何方法返回原始字符串数据,以便我们正确编码。现在我们知道文件的元数据原始编码是,例如,GBK。有没有办法将utf-8编码字符串更正为GBK?有。您应该了解ruby 1.9在string类上的force_编码和encode方法。我建议在ruby中操作之前,尽快将所有内容转换为UTF-8。不,没有,将UTF-8中没有的内容解码为U

例如,我们需要第三方库来解析和获取文件元数据。但是该方法将通过utf-8对所有元数据进行解码,即使元数据采用另一种编码,它也会返回一个utf-8编码的字符串。lib不支持任何方法返回原始字符串数据,以便我们正确编码。现在我们知道文件的元数据原始编码是,例如,GBK。有没有办法将utf-8编码字符串更正为GBK?

有。您应该了解ruby 1.9在string类上的
force_编码
encode
方法。我建议在ruby中操作之前,尽快将所有内容转换为UTF-8。

不,没有,将UTF-8中没有的内容解码为UTF-8是有损的。这意味着,当您从库中获取字符串时,您已经丢失了信息,无法将原始数据表示为GBK。更改库的工作方式,或将文件元数据更改为UTF-8。

第三方库不支持任何方法返回原始字符串数据以供我们正确编码。我的意思是,如果必须使用此第三方库,我没有机会尽快将其转换为UTF-8。更改库有点困难。如果文件格式和库都是封闭源代码怎么办?@y.s.文件格式和库都是封闭源代码,但彼此不兼容?向提供商提交错误报告是您唯一的选择