我遇到的这种问题实际原因还是在数据存的那一步,之所以这个标题是因为我搜的时候用这个标题搜不到正确答案。
我使用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进行传输,成为乱码。