当前位置:  技术问答>java相关

UTF-8问题

    来源: 互联网  发布时间:2015-04-28

    本文导语:  问题简述:汉字字符串在gb2312和utf-8编码之间的转换,我是用了类似于gb2312和iso-8859-1编码转化的方法,结果对中文字符无效 参考以下例子程序: public class test {   public static void main(String[] args) {     toUTF8("abc...

问题简述:汉字字符串在gb2312和utf-8编码之间的转换,我是用了类似于gb2312和iso-8859-1编码转化的方法,结果对中文字符无效

参考以下例子程序:

public class test {
  public static void main(String[] args) {
    toUTF8("abc");
    toUTF8("汉字");
  }

  static void toUTF8(String s){
    System.out.println("Source string: "+s);
    try{
s = new String(s.getBytes(), "UTF8");
byte[] bytes = s.getBytes("UTF8");
System.out.println("length: "+bytes.length);
    }catch(java.io.UnsupportedEncodingException uee){
uee.printStackTrace();
    }
  }
}

输出:
Source string: abc

length: 3

Source string: 汉字

length: 0


我发现中文string从gb2312转化到utf-8后,成了一个空string

中文win2000+jb6,系统默认编码GBK

|
try{
s = new String(s.getBytes(), "UTF8");
byte[] bytes = s.getBytes("UTF8");
System.out.println("length: "+bytes.length);
    }catch(java.io.UnsupportedEncodingException uee){
uee.printStackTrace();
    }


改为:
try{
s = new String(s.getBytes(), "GBK");
byte[] bytes = s.getBytes("UTF8");
System.out.println("length: "+bytes.length);
    }catch(java.io.UnsupportedEncodingException uee){
uee.printStackTrace();
    }
看看。

|

static void toUTF8(String s)
    {
      System.out.println("Source string: "+s);
      try
      {
        byte[] bytes = s.getBytes("ISO-8859-1");
        String strReturn = new String(bytes,"UTF-8");
        System.out.println(strReturn);
        System.out.println( "length: "+strReturn.length() );
      }
      catch(java.io.UnsupportedEncodingException uee)
      {
        uee.printStackTrace();
      }
  }

|
应该直接
byte[] bytes = s.getBytes("UTF8");
你多了一个NEW所以才这样,字符转换时不需要的。
长度这样是4。

|
public byte[] getBytes(String enc)
                throws UnsupportedEncodingException
Convert this String into bytes according to the specified character encoding, 
storing the result into a new byte array.
这个函数是将字符串按指定的编码方案编码,返回其编码
所以,想知道字符串的UTF8编码的话,可以使用getBytes("UTF8")
byte[] bytes = "中文".getBytes("UTF8");
System.out.println("length: "+bytes.length);
>>length: 6


    
 
 
 
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 如何在windows下的DOS窗口中显示utf-8字符(CMD命令提示符终端显示utf-8字符)
  • 跪求解决方法 iconv 不支持 utf-8 gb2312转换 iconv -l 显示没有utf-8 gb2312
  • PHP实现Unicode和Utf-8互相转换
  • 在java中,怎么将UTF-8码转换为GB码?
  • 传utf-8的网页到linux出现乱码
  • gdbtui 中文注释乱码?设置了charset为UTF-8还是乱码,怎么办?
  • 怎样将UTF-8码的String转换成unicode!!!!!
  • C++国际化 UTF-8 CPP
  • 网络技术 iis7站长之家
  • 有没有去掉utf-8乱码的办法?
  • linux上使用C++如何处理utf-8编码的字段
  • utf8与UTF-8有什么区别
  • Shell脚本把文件从GBK转为UTF-8编码
  • 怎么把ubuntu默认的汉字编码UTF-8 彻底改为 gb2312 呢?
  • 如何在Solaris下查看UTF-8编码得中文字体 (不想安UTF-8得汉字字库)
  • Linux下UTF-8编码的转换
  • php自动识别文件编码并转换为UTF-8的方法
  • UTF-8字符串生成工具 utfout
  • 什么是UTF-8编码
  • 难道WINDOW下的UTF-8编码不够纯?
  • php中文乱码怎么办如何让浏览器自动识别utf-8


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3