ruby - 在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库位
我尝试过的事情 -
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
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
这似乎好一点。
我试过这个 -
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位"
这看起来好像有些字符正在被解码,但不是全部。
任何建议都会有所帮助。
解决方案
推荐阅读
- android - EditText 中的这些主题属性有什么用?
- mysql - 使用 SQL UNIX_TIMESTAMP() 后如何在 ggplot 轴上显示一天中的时间?
- ios - XCode 12 - 命令 PhaseScriptExecution 失败,退出代码为非零
- spring - 发布 Swagger OpenApi 2.0 以在 Java/Spring 中创建 Power Automate 连接器
- python - 运行 setup.py install for imread ... 错误
- google-cloud-platform - 有没有办法自动修改 GCP 实例?(使用 Ansible)
- macos - libSOIL.a 文件在 MacOS 上被忽略
- java - 反序列化 BankAccount 对象时条纹 InvalidDefinitionException - Java
- postgresql - 如何使用 Graphql 在 prisma 2 中使用 $queryRaw 获取所有内部查询(多合一查询)
- r - 在 grepl 字符串中使用多个表达式来创建新数据