日期:2014-05-18  浏览次数:20653 次

奇怪的字符编码问题求解?
不才现在open   suse   linux   10.2   下使用   java   编写   cgi   程序,数据库采用的系统自带的mysql   5.0,服务器是apache2,发现一个奇怪的字符编码问题。
状况如下:数据库的字符集已设置为utf8,通过HTML页面存入数据库的中文字符显示为?号,但是在JAVA程序中读取出来显示在控制台的是正确的中文,通过CGI调用java程序使用System.out.println语句直接输出到浏览器的是乱码,然而不须经过任何转码,直接在java程序中写入文件,然后使用Cat命令打开该页在浏览器中显示为正常的中文。
注一下:浏览器中显示的字符集选择的是utf8。
求高手给一个答案。

------解决方案--------------------
linux呢,是什么编码,echo $LANG看一下
这种问题,最好在程序中自己做一层文字filter吧,通过getBytes( "charset_name ");
------解决方案--------------------
说明命令行的字符编码和HTML的字符编码不一致。
------解决方案--------------------
网络传输是iso8859_1,所以你需要在你生成的页面将iso8859_1转成utf8,
可以这样写
<%
String keyword =
new String(request.getParameter( "your keyword ").getBytes( "8859-1 "), "GBK " );
%>