首页 > 解决方案 > 在ruby中将中文字符转换为UTF-8

问题描述

我有一个 ruby​​ ODBC 连接器并得到这样的响应

Yangpu Area, Shanghai.\r\n\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\r\n\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A\x1A251\x1A9\x1A\x1A

当我使用检查编码时,str.encoding.to_s我得到它"ASCII-8BIT"

我需要将其UTF-8正确转换以将其保存在数据库中。

预期的结果是——

Yangpu Area, Shanghai.
柳州博纳汽车科技有限公司
上海市宝山区安达路251号9库位

我尝试过的事情 -

  1. str.force_encoding('ISO-8859-1').encode('UTF-8')

这给了我 -

Yangpu Area, Shanghai.\r\n\u001A\u001A\u001A\u001A\u001A\u001A\u001A\u001A\u001A\u001A\u001A\u001A\r\n\u001A\u001A\u001A\u001A\u001A\u001A\u001A\u001A\u001A251\u001A9\u001A\u001A

  1. str.force_encoding('IBM437').encode('UTF-8')

这也给了我同样的结果。

任何帮助,将不胜感激。

编辑:感谢大家的评论。Max 的评论给了我一个关于该做什么的提示。

我现在得到的回应是—— Yangpu Area, Shanghai.\r\n\xE6\x1A\xB3\xE5\xB7\x1A\xE5\x8D\x1A\xE7\xBA\xB3\xE6\xB1\xBD\xE8\xBD\xA6\xE7\xA7\x1A\xE6\x1A\x1A\xE6\x1A\x1A\xE9\x1A\x90\xE5\x1A\xAC\xE5\x8F\xB8\r\n\xE4\xB8\x1A\xE6\xB5\xB7\xE5\xB8\x1A\xE5\xAE\x9D\xE5\xB1\xB1\xE5\x1A\xBA\xE5\xAE\x1A\xE8\xBE\xBE\xE8\xB7\xAF251\xE5\x8F\xB79\xE5\xBA\x1A\xE4\xBD\x8D

这似乎好一点。

我试过这个 -

  1. str.force_encoding('UTF-8')

这给了我 -

"Yangpu Area, Shanghai.\r\n" +
"\xE6\u001A\xB3\xE5\xB7\u001A\xE5\x8D\u001A纳汽车\xE7\xA7\u001A\xE6\u001A\u001A\xE6\u001A\u001A\xE9\u001A\x90\xE5\u001A\xAC司\r\n" +
"\xE4\xB8\u001A海\xE5\xB8\u001A宝山\xE5\u001A\xBA\xE5\xAE\u001A达路251号9\xE5\xBA\u001A位"

这看起来好像有些字符正在被解码,但不是全部。

任何建议都会有所帮助。

标签: ruby

解决方案


推荐阅读