为什么new String(str.getBytes("shift_jis"),"UTF-8")解决不了乱码的问题呢? (问题再问)

时间:2023-01-06 11:48:56
我们现在的项目使用的服务器是Linux, 客户端是Win2000, 
Linux下的数据库的编码方式是UTF-8, 程序也是UTF-8的.
  在文本框中写入日文字符后, 提交表单后, 取得的字符串就已经是乱码了, 
  我用如下的函数进行转换, 一开始是出现奇怪的问题:
    ①当字符串中有空格的时候, 转换后, 空格后面的字符就被截下去了.
    ②没有空格的时候, 就能够正常的转换.
  可现在经过多次修改以后, 居然连没有空格的时候都不好用了.....

郁闷哪!!!!!
谁能帮我呀!!!
加上前面的贴子, 300分哪!!!!
(http://expert.csdn.net/Expert/topic/1517/1517223.xml?temp=.9888117)

28 个解决方案

#1


我也尝试过使用new String(str.getBytes("ISO8859-1"),"UTF-8")等等,
可都不好用!!!

怎么办哪!!!

#2


应该是客户端取的时候就要转一下码

#3


不应该呀,系统编码是UTF-8,程序中应该不用转码呀?

#4


"客户端取的时候就要转一下码?"
什么意思? 能详细说一下吗?

#5


new String(str.getBytes("UTF-8"),"日文编码");
日文编码好象有两种:另一种好像是EUC吧or是EUC_jp。
其实思路就是这样,以上应该是把读到的UTF-8转化成日文的,还是多试一下吧,还有jsp里也要把编码设好。

#6


每个叶面加上编码,shift_jis或者EUC-JP
我们用的是EUC-JP
<%@ page contentType="text/html;charset=EUC-JP" %>
然后存的时候不要做任何转换
取的时候也不要做转换
就可以了
我们用的是mysql

#7


不要用UTF8编码,日文用UFT8编码 有些文字会有问题的

#8


没办法,
客户就是要求用UTF-8, 我们也没有办法!!

#9


页面编码客户也要求用UTF-8吗???
其实理论上是一样的,用UTF-8就都用UTF-8就没有问题了

#10


是往数据库里检索吗?
我也是做这个的,别在JAVA上琢磨了,不管你用什么字符吧,反正你的select语句到了数据库是不是正确的,这点很重要,用纯sql/plus环境执行一下select语句是否正确显示?
确认你的数据库,如是oracle的话请确保版本在8.1.6以上,字化问题不攻自破.

#11


不懂

#12


对啊,没有问题啊,提交是UTF-8也没有关系
只要在输出的时候转一次码就可以了
另外,linux下面URLencoding好像不能用

#13


55555555!!!
我的情况和你们说的是不一样的!!!
客户要求所有的编码格式都是UTF-8的, 就连ORACLE也是UTF-8的!!!
sql语句本身是没有问题的,
现在问题在于: 我从页面上取得的要向数据库里写入的字符就是乱码!!!
快被这个破问题烦死了!!!

#14


现在问题在于: 我从页面上取得的要向数据库里写入的字符就是乱码!!!

这里可以用URLencode对页面提交的参数编码,但是在linux上面的URLencode好像有bug
实在不行你在servlet里面用
request.setChatacterEncoding(“页面的编码”);
试试看

#15


java.net.URLEncoder.encode(String);

#16


你的应用服务器是什么???

#17


试试str.getBytes("SJIS")

#18


应用服务器是websphere

#19


"SJIS"会报错, LINUX好象没有这个字符集.

#20


request.setChatacterEncoding(“页面的编码”);
也会报错, 我们用的那个框架, 不支持这种写法!!!

#21


我也遇到过这种问题。
UTF-8就是不行,死活是乱码。
后来就改用Shift_JIS了。

希望楼主若是解决了,总结一下。

#22


我就顶一下,然后收藏!^_^

#23


项目结束了,天窗也开了。
可是这个问题还是没解决。
贴子结不结呢?

犹豫中。。。。。。。

#24


建议在应用服务器的配置文件中修改编码方式

#25


存的时候也转换一下,取的时候反转换,不知可行否?

#26


我们用的是别人开发的框架,
提交时的处理是由框架来完成的,
没有办法控制!

#27


我们用的是别人开发的框架,
提交时的处理是由框架来完成的,
没有办法控制!

#28


算了,虽然问题还是没有解决,但是时间已经这么长了,所以还是结了吧!
感谢上面各位GGJJ的热心帮助!!
我的mail是dorothe_hatty@hotmail.com
如果以后各位GGJJ遇到了同样的问题,
有了解决方案,麻烦教我一下!
谢谢了!

#1


我也尝试过使用new String(str.getBytes("ISO8859-1"),"UTF-8")等等,
可都不好用!!!

怎么办哪!!!

#2


应该是客户端取的时候就要转一下码

#3


不应该呀,系统编码是UTF-8,程序中应该不用转码呀?

#4


"客户端取的时候就要转一下码?"
什么意思? 能详细说一下吗?

#5


new String(str.getBytes("UTF-8"),"日文编码");
日文编码好象有两种:另一种好像是EUC吧or是EUC_jp。
其实思路就是这样,以上应该是把读到的UTF-8转化成日文的,还是多试一下吧,还有jsp里也要把编码设好。

#6


每个叶面加上编码,shift_jis或者EUC-JP
我们用的是EUC-JP
<%@ page contentType="text/html;charset=EUC-JP" %>
然后存的时候不要做任何转换
取的时候也不要做转换
就可以了
我们用的是mysql

#7


不要用UTF8编码,日文用UFT8编码 有些文字会有问题的

#8


没办法,
客户就是要求用UTF-8, 我们也没有办法!!

#9


页面编码客户也要求用UTF-8吗???
其实理论上是一样的,用UTF-8就都用UTF-8就没有问题了

#10


是往数据库里检索吗?
我也是做这个的,别在JAVA上琢磨了,不管你用什么字符吧,反正你的select语句到了数据库是不是正确的,这点很重要,用纯sql/plus环境执行一下select语句是否正确显示?
确认你的数据库,如是oracle的话请确保版本在8.1.6以上,字化问题不攻自破.

#11


不懂

#12


对啊,没有问题啊,提交是UTF-8也没有关系
只要在输出的时候转一次码就可以了
另外,linux下面URLencoding好像不能用

#13


55555555!!!
我的情况和你们说的是不一样的!!!
客户要求所有的编码格式都是UTF-8的, 就连ORACLE也是UTF-8的!!!
sql语句本身是没有问题的,
现在问题在于: 我从页面上取得的要向数据库里写入的字符就是乱码!!!
快被这个破问题烦死了!!!

#14


现在问题在于: 我从页面上取得的要向数据库里写入的字符就是乱码!!!

这里可以用URLencode对页面提交的参数编码,但是在linux上面的URLencode好像有bug
实在不行你在servlet里面用
request.setChatacterEncoding(“页面的编码”);
试试看

#15


java.net.URLEncoder.encode(String);

#16


你的应用服务器是什么???

#17


试试str.getBytes("SJIS")

#18


应用服务器是websphere

#19


"SJIS"会报错, LINUX好象没有这个字符集.

#20


request.setChatacterEncoding(“页面的编码”);
也会报错, 我们用的那个框架, 不支持这种写法!!!

#21


我也遇到过这种问题。
UTF-8就是不行,死活是乱码。
后来就改用Shift_JIS了。

希望楼主若是解决了,总结一下。

#22


我就顶一下,然后收藏!^_^

#23


项目结束了,天窗也开了。
可是这个问题还是没解决。
贴子结不结呢?

犹豫中。。。。。。。

#24


建议在应用服务器的配置文件中修改编码方式

#25


存的时候也转换一下,取的时候反转换,不知可行否?

#26


我们用的是别人开发的框架,
提交时的处理是由框架来完成的,
没有办法控制!

#27


我们用的是别人开发的框架,
提交时的处理是由框架来完成的,
没有办法控制!

#28


算了,虽然问题还是没有解决,但是时间已经这么长了,所以还是结了吧!
感谢上面各位GGJJ的热心帮助!!
我的mail是dorothe_hatty@hotmail.com
如果以后各位GGJJ遇到了同样的问题,
有了解决方案,麻烦教我一下!
谢谢了!