当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 12 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : 一个java乱码的问题
帖子发表于 : 2007-10-08 22:12 

注册: 2007-04-22 10:03
帖子: 60
地址: china
送出感谢: 0 次
接收感谢: 0 次
package bs;

import java.io.UnsupportedEncodingException;

public class Zh {
public static String asc2gb(String asc) {
String ret;

if (asc == null)
return asc;
try {
ret = new String(asc.getBytes("ISO-8859-1"), "GB2312");
} catch (UnsupportedEncodingException e) {
ret = asc;
}
return ret;
}

public static String gb2asc(String gb) {
String ret;
if (gb == null)
return gb;
try {
ret = new String(gb.getBytes("GB2312"), "ISO-8859-1");
} catch (UnsupportedEncodingException e) {
ret = gb;
}
return ret;
}

public static String iso2utf(String iso) {
String ret;
if (iso == null)
return iso;
try {
ret = new String(iso.getBytes("ISO-8859-1"), "UTF-8");
} catch (UnsupportedEncodingException e) {
ret = iso;
}
return ret;
}

public static void main(String[] args) {
Zh zh = new Zh();
System.out.println(zh.iso2utf("2323niaddf对反ds"));

}

}

我这是在ubuntu平台下写的,但是那些中文都不显示,显示的是?? 为什么


页首
 用户资料  
 
2 楼 
 文章标题 :
帖子发表于 : 2007-10-09 18:17 
头像

注册: 2006-12-20 18:41
帖子: 776
送出感谢: 0 次
接收感谢: 0 次
Java中的String 表示一个 UTF-16 格式的字符串
而你的iso2utf()方法参数是一个iso编码的字符串,你把一个UTF-16的字符串传进去,结果iso.getBytes("ISO-8859-1")方法把两个字节的字符串截取成一个字节,中文部分当然就剩一个问号了。

我加了一个utf2iso()方法,先把String转换成iso-8859-1编码的字符串,然后就传到你的iso2utf()方法中得到的就是正确的。
代码如下:
代码:
  public static String utf2iso(String utf) {
    String ret;
    if(utf == null)
      return utf;
    try {
      ret = new String(utf.getBytes("UTF-8"), "ISO-8859-1");
    } catch (UnsupportedEncodingException e) {
      ret = utf;
    }
    return ret;
  }
 
  public static void main(String[] args) {
    String iso = utf2iso("2323niaddf对反ds");
    String utf = iso2utf(iso);
    System.out.println(iso);
    System.out.println(utf);
    System.out.println(iso2utf("2323niaddf对反ds"));
  }


执行结果:
2323niaddf??????ds
2323niaddf对反ds
2323niaddf??ds

至于为什么utf转成iso后中文会变成两个问号,你再仔细想想吧 :D

另外,你所有的方法都是static的,还有必要new一个Zh对象出来吗?


_________________
尽情享受生活~

Welcome to AutumnHealth's blog:
http://forum.ubuntu.org.cn/weblog.php?w=1421
http://blog.csdn.net/autumnhealth


最后由 AutumnHealth 编辑于 2007-10-09 22:27,总共编辑了 1 次

页首
 用户资料  
 
3 楼 
 文章标题 :
帖子发表于 : 2007-10-09 18:29 
头像

注册: 2006-05-03 0:39
帖子: 8273
地址: المريخ
送出感谢: 0 次
接收感谢: 1
你们就不能排一下版吗?


_________________
PHP是最好的语言!不服来战!


页首
 用户资料  
 
4 楼 
 文章标题 : 谢谢
帖子发表于 : 2007-10-09 19:02 

注册: 2007-04-22 10:03
帖子: 60
地址: china
送出感谢: 0 次
接收感谢: 0 次
谢谢二楼的兄弟,我现在明白一些了
:D


页首
 用户资料  
 
5 楼 
 文章标题 :
帖子发表于 : 2007-10-09 22:25 
头像

注册: 2006-12-20 18:41
帖子: 776
送出感谢: 0 次
接收感谢: 0 次
stlxv 写道:
你们就不能排一下版吗?


编辑器里排得好好的,copy过来后,在编辑框里还有空格,发表之后没想到就变这样了。。。 -_-


_________________
尽情享受生活~

Welcome to AutumnHealth's blog:
http://forum.ubuntu.org.cn/weblog.php?w=1421
http://blog.csdn.net/autumnhealth


页首
 用户资料  
 
6 楼 
 文章标题 :
帖子发表于 : 2007-10-09 22:28 
头像

注册: 2006-12-20 18:41
帖子: 776
送出感谢: 0 次
接收感谢: 0 次
明白了,得用[code][/code]括起来,空格才有效


_________________
尽情享受生活~

Welcome to AutumnHealth's blog:
http://forum.ubuntu.org.cn/weblog.php?w=1421
http://blog.csdn.net/autumnhealth


页首
 用户资料  
 
7 楼 
 文章标题 :
帖子发表于 : 2007-10-09 23:04 

注册: 2006-09-07 22:51
帖子: 849
送出感谢: 0 次
接收感谢: 0 次
java好像不用搞什么就中文显示了啊!


页首
 用户资料  
 
8 楼 
 文章标题 :
帖子发表于 : 2007-10-09 23:09 

注册: 2007-04-22 10:03
帖子: 60
地址: china
送出感谢: 0 次
接收感谢: 0 次
这个是与平台有关系的,在linux下是需要编码转换的,不然会乱码的,是需要的。


页首
 用户资料  
 
9 楼 
 文章标题 :
帖子发表于 : 2007-10-09 23:28 

注册: 2006-09-07 22:51
帖子: 849
送出感谢: 0 次
接收感谢: 0 次
我什么也没有搞
linux@debian:/tmp
-0-$ cat j.java
class j{
public static void main(String s[])
{
System.out.println("java 对世界说hello");
}
}

linux@debian:/tmp
-0-$ javac j.java && java j
java 对世界说hello
linux@debian:/tmp
-0-$


页首
 用户资料  
 
10 楼 
 文章标题 : 你理解错误了
帖子发表于 : 2007-10-09 23:32 

注册: 2007-04-22 10:03
帖子: 60
地址: china
送出感谢: 0 次
接收感谢: 0 次
你这个是直接写的汉字,自然是当前系统可以识别的编码了,所以可以显示的,但是很多时候,比如从文件中获取数据,那些数据的编码可能就不是当前系统默认的,那样读取的时候就需要编码转换的


页首
 用户资料  
 
11 楼 
 文章标题 :
帖子发表于 : 2007-10-09 23:48 
头像

注册: 2006-12-20 18:41
帖子: 776
送出感谢: 0 次
接收感谢: 0 次
wkt 写道:
java好像不用搞什么就中文显示了啊!


Java编码转换在网络编程上用得比较多


_________________
尽情享受生活~

Welcome to AutumnHealth's blog:
http://forum.ubuntu.org.cn/weblog.php?w=1421
http://blog.csdn.net/autumnhealth


页首
 用户资料  
 
12 楼 
 文章标题 : 是的
帖子发表于 : 2007-10-09 23:50 

注册: 2007-04-22 10:03
帖子: 60
地址: china
送出感谢: 0 次
接收感谢: 0 次
是的,在网络数据抽取中用的非常多,我也是在做这方面的时候才需要查询这方面资料的,希望大家在这方面有经验的多讲一些。


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 12 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 3 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译