我遇到的这种问题实际原因还是在数据存的那一步,之所以这个标题是因为我搜的时候用这个标题搜不到正确答案。

我使用hive的jdbc,insert中文进一张hive表,指定项目编码和hive表的编码都不管用,仍然乱码。

解决方法:

hive jdbc存数据的时候把字符串转一下编码(第三列是中文字段)


String p1 = tmp.get(i).split(",")[0];
String p2 = tmp.get(i).split(",")[1];
String p3 = new String(tmp.get(i).split(",")[2].getBytes(), "iso8859-1");
String p4 = tmp.get(i).split(",")[3];


一定要转成iso8859-1的编码集!GBK和UTF-8都不管用。。

目前认为这个hive的jdbc是通过http请求获取数据,中文在中间使用了iso8859-1进行传输,成为乱码。