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

byte、char数组转换为String的问题

    来源: 互联网  发布时间:2015-01-12

    本文导语:  文本数据没问题,二进制数据就会出错,所以再把String转回来数组,写入文件时,内容发生了变化,所以处理不到一些图片信息。我试过在byte、char数组转换为String时用了“8859_1”等编码参数,都无法正确转换。有什...

文本数据没问题,二进制数据就会出错,所以再把String转回来数组,写入文件时,内容发生了变化,所以处理不到一些图片信息。我试过在byte、char数组转换为String时用了“8859_1”等编码参数,都无法正确转换。有什么办法在byte、char数组转换为String时让数据不自动转换某些字符呢?

|
to zjxyz:
看到jre里的i18n.jar中的类, 又看了看String的源代码, 我有个想法, 希望你不会笑话我:p
String(你可以看做是一个char[])中char[]到byte[]的转化都遵循一定的编码规则, 而这些规则在jre中的i18n.jar里. 我的想法就是添加一个规则进去, 呵呵 ... 
比如String的getBytes方法, 实质是将String(也就是char[])转成byte[], 以此为例. 下面是我觉得比较能说明问题的代码:p
sun.io.Converters
--
...
    private static Class getConverterClass(int type, String encoding)
throws UnsupportedEncodingException
    {
String enc = null;

/* "ISO8859_1" is the canonical name for the ISO-Latin-1 encoding.
   Native code in the JDK commonly uses the alias "8859_1" instead of
   "ISO8859_1".  We hardwire this alias here in order to avoid loading
   the full alias table just for this case. */
if (!encoding.equals("ISO8859_1")) {
    if (encoding.equals("8859_1")) {
enc = "ISO8859_1";
    } else {
enc = CharacterEncoding.aliasName(encoding);
    }
}
if (enc == null) {
    enc = encoding;
}

try {
    return Class.forName(getConverterPackageName()
 + "." + converterPrefix[type] + enc);
} catch(ClassNotFoundException e) {
    throw new UnsupportedEncodingException(enc);
}

    }
...
也不用太仔细看上面的代码了, 知道是动态加载类就好了, 而这证明了上面我说的进行扩充的可行性 :)
再说详细点, 你可以定义一种编码规则, 比如"X7788", 借助它来实现你所说的"在byte、char数组转换为String时让数据不自动转换某些字符", 你需要做的是提供两个类: sun.io.ByteToCharX7788 和 sun.io.CharToByteX7788 ... 

抱歉本来应该先试试在说的, 但实在觉得困了, 所以 ... 就当是瞎侃吧:p

Good luck :)

    
 
 

您可能感兴趣的文章:

  • java中如何得到byte数组中实际数值的长度??
  • Byte数组如何操作
  • 如何将Srting类型的字符窜转换成byte[]类型的数组呢?
  • 如何从byte数组中读出一short?在线给分
  • 请问怎么在java里连接两个byte型数组?
  • javascript开源软件 iis7站长之家
  • 我想建立一个byte数组,该怎么写??我写成byte[] buff =new byte(4096);出错
  • Python3中内置类型bytes和str用法及byte和string之间各种编码转换
  • byte如何转换成String?
  • int型怎么转换为byte型?
  • 关于byte与int之间的转换
  • 如何将String转换为byte[]型,急用,立即送分
  • String怎么转换为byte[]?
  • 如何将String 转换为byte[] ?!
  • 请问如何将Byte型转换为int型?
  • 请问一个转换问题:如何将Byte[]转化为Sring类型
  • 有byte[]与int转换的好方法吗?
  • 怎样将short转换为两个byte输出?并可以被还原为short?
  • C# Stream 和 byte[] 之间的转换
  • int型(or short)怎样转换为byte[]型啊?新手求救
  • c# Stream byte[]及文件转换与读写的代码
  • 如何把bytes[]转换为String()
  • C#实现Stream与byte[]之间的转换实例教程
  • android byte[] 和short[]转换的方法代码
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • String(byte[] bytes, int offset, int length)括号里的参数是什么意思?
  • 如何把Date变成byte[](String也行),然后又能把byte[]变回一个Date??? 求救!!!
  • 怎样用ASCII码? String+ASCII 0x01+String,形成 byte[]
  • 特别简单byte[] string
  • byte[] String char[] 区别如何?
  • 如何将byte[]转成String类型?
  • string 和 byte[]转化
  • string ---> byte[][]
  • 这个构造函数new String(byte[],int,int,int)怎麽用?谢谢!
  • java命名空间java.lang类byte的类成员方法: byte定义及介绍
  • 如何让两个byte类型的变量a和b进行异或(^)操作,然后将结果存入另一个byte中?
  • java命名空间java.lang类byte的类成员方法: valueof定义及介绍
  • 如何把一个大的byte[]分割成小的byte[]???
  • java命名空间javax.management.openmbean类simpletype<t>的类成员方法: byte定义及介绍
  • 如何把int变成4个byte,然后又能把这4个byte变回一个int??? 求救!!!
  • java命名空间java.lang类byte的类成员方法: size定义及介绍
  • 请教大侠:Additionally, kernel memory is not pageable. Therefore, every byte of memory you consume is one less byte of available
  • java命名空间javax.lang.model.type枚举typekind的类成员方法: byte定义及介绍
  • 各位高手 linux 下编译 java 程序 出现 提示jc1 "Cannot allocate xxx bytes after allocating yyyy bytes"
  • java命名空间java.lang类byte的类成员方法: compareto定义及介绍
  • 简单问题在线给分:怎样将一个byte[]的值拷贝给另一个byte[]
  • java命名空间java.lang类byte的类成员方法: bytevalue定义及介绍
  • byte类型
  • java命名空间java.lang类byte的类成员方法: type定义及介绍
  • 关于byte[]的问题
  • java命名空间java.awt.image类databuffer的类成员方法: type_byte定义及介绍
  • byte() 方法如何使用?
  • java命名空间java.lang类byte的类成员方法: max_value定义及介绍
  • 为啥报错字符串与byte问题
  • java命名空间java.lang类byte的类成员方法: tostring定义及介绍
  • ---初级问题,byte类型到底表示什么含义--


  • 站内导航:


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

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

    浙ICP备11055608号-3