linux中的UTF-8问题

时间:2013-03-08 06:48:25

标签: java linux utf

String departmentName = request.getParameter("dept_name");
departmentName = new String(departmentName.getBytes(Charset.forName("UTF8")),"UTF8");
System.out.println(departmentName);//O/p:  composés

在Windows中,显示的输出符合我的预期,并且还会获取部门名称匹配条件的记录。

但是在Linux中它返回“compos ?? s”,所以我的数据库查询失败了。

任何人都可以给我解决方案吗?

3 个答案:

答案 0 :(得分:2)

可能是因为Charset UTF8不存在。您必须使用UTF-8。请参阅javadoc

答案 1 :(得分:0)

首先,使用带有System.out.println的unicode输出并不是一个好的指标,因为你正在处理控制台编码。使用OutputStreamWriter打开文件,将设置编码解析为UTF-8,然后您可以说明请求参数是否正确编码。

其次,可能存在数据库连接编码问题。对于MySQL,您需要明确指定连接字符串中的编码,对于其他,也可以是,未指定时采用默认的系统编码。

答案 2 :(得分:0)

首先,尝试找出每个特定位置的编码。

例如,如果Linux系统使用UTF-8字符集运行,则字符串可能已经具有正确的编码;那个黑客可能只在Windows上需要。

最后但并非最不重要的是,你如何知道它是不正确的?并且您的查看器不正确吗?您的控制台日志查看器使用什么字符集?

您需要执行大量检查才能找到,其中的编码与您应用程序的预期不同。