java - UTF-8 字母未正确显示
问题描述
我正在使用 Windows 10 上的 apache Drill 从 dos-prompt 查询 json 格式的数据。我正在遵循他们的指南。
我有一个非常基本的 json-object {"år":"2018", "æøå":"ÆØÅ"}
,当我从 apache Drill 查询它时,输出显示不正确。
select * from dfs.`C:\Users\foo\Downloads\utf8.json`;
+-------+------+
| Õr | µ°Õ |
+-------+------+
| 2018 | ãÏ┼ |
+-------+------+
1 row selected (0,114 seconds)
该文件以 UTF-8 格式保存(使用 sublime 文本)。我也尝试将它保存在带有 BOM 的 UTF-8 中,但它没有任何区别。
使用此SO-thread中提到的设置环境变量
set JAVA_TOOL_OPTIONS=-Dfile.encoding=UTF8
没有帮助。
编辑:
发布后不久,我发现一个 SO-thread 建议将 windows 代码页更改为 65001 (utf-8)。这会显示正确的字母,但也会阻止命令历史记录(向上箭头)正常工作。
chcp 65001
sqlline.bat -u "jdbc:drill:zk=local"
select * from dfs.`C:\Users\cgu\Downloads\utf8.json`;
+-------+------+
| år | æøå |
+-------+------+
| 2018 | ÆØÅ |
+-------+------+
解决方案
推荐阅读
- wagtail - 将 HTML 查看添加到 Wagtail 上的 Draftail 编辑器
- python - Python - “字符串索引必须是整数”错误使用 json 和 twitter
- sql-server - 从 T-SQL 脚本中调用 T-SQL 命令的 *File*
- python-3.x - Bs4和python中的问题
- java - 将 MapboxMap 从一个活动发送到另一个活动
- database - 使用 TypeORM Cordova 数据库将图像保存为 Blob
- javascript - 仅在输入按钮的值发生更改后,使用 JavaScript 和 jQuery 更改警报框中的字符串
- node.js - Appveyor 部署挂在节点 gifsicle 安装上
- android - 如何在 FirestoreRecyclerAdapter 中添加 2 个不同的查询?
- javascript - 单击一个按钮会折叠所有 div 而不是它所属的 div