首页 > 解决方案 > 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  | ÆØÅ  |
+-------+------+

标签: javawindowsutf-8cmdapache-drill

解决方案


推荐阅读