关于字符串和byte数组在java和ios之间兼容的解决办法。

之前在java上写过String转为byte数组的代码,后来在开发iPhone程序的时候,发现也需要把NSString转为byte数组,并且需要达到跟java程序兼容。但是发现java自身的默认编码机制为iso-8859-1,而ios的默认编码机制为utf-8,所以直接编码并不能达到两者兼容的问题。后来查阅相关资料,最后解决了编码兼容的问题,而且中英文都通用。

如下为java代码:

String str = "你好啊,aBc!";  

ByteArrayOutputStreambaos = new ByteArrayOutputStream();  

DataOutputStreamoutputstream = new DataOutputStream(baos);  

outputstream.writeChars(str);  

byte[]contents = baos.toByteArray();  

for (inti = 0; i < contents.length; i++) {  

    System.out.println("contents:"+contents[i]);  

}  

最后打印为:

contents:79  

contents:96  

contents:89  

contents:125  

contents:85  

contents:74  

contents:0  

contents:44  

contents:0  

contents:97  

contents:0  

contents:66  

contents:0  

contents:99  

contents:0  

contents:33  

ios代码:

NSString *str = @"你好啊,aBc!";  

NSStringEncoding enc = CFStringConvertEncodingToNSStringEncoding(NSUTF16BigEndianStringEncoding);  

NSData *data = [str dataUsingEncoding:enc];  

Byte *byte = (Byte *)[data bytes];  

for (int i=0 ; i<[data length]; i++) {  

NSLog(@"byte = %d",byte[i]);  

}  

最后打印结果为

2012-07-19 10:07:46.967 encoding[593:f803] byte = 79  

2012-07-19 10:07:46.969 encoding[593:f803] byte = 96  

2012-07-19 10:07:46.969 encoding[593:f803] byte = 89  

2012-07-19 10:07:46.970 encoding[593:f803] byte = 125  

2012-07-19 10:07:46.970 encoding[593:f803] byte = 85  

2012-07-19 10:07:46.970 encoding[593:f803] byte = 74  

2012-07-19 10:07:46.970 encoding[593:f803] byte = 0  

2012-07-19 10:07:46.971 encoding[593:f803] byte = 44  

2012-07-19 10:07:46.971 encoding[593:f803] byte = 0  

2012-07-19 10:07:46.971 encoding[593:f803] byte = 97  

2012-07-19 10:07:46.971 encoding[593:f803] byte = 0  

2012-07-19 10:07:46.972 encoding[593:f803] byte = 66  

2012-07-19 10:07:46.972 encoding[593:f803] byte = 0  

2012-07-19 10:07:46.972 encoding[593:f803] byte = 99  

2012-07-19 10:07:46.972 encoding[593:f803] byte = 0  

2012-07-19 10:07:46.973 encoding[593:f803] byte = 33  

编码达到了一致!

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,785评论 18 399
  • 一、Java 简介 Java是由Sun Microsystems公司于1995年5月推出的Java面向对象程序设计...
    子非鱼_t_阅读 4,310评论 1 44
  • 我们的欲望有好坏吗? 因为想要有一个好的身材,所以你告诉自己。我要减肥,要锻炼,要控制饮食,不吃垃圾食品。可是过了...
    萤火之灯阅读 210评论 0 0
  • 01 最近《妈妈是超人》新一季开播了,这次的阵营是贾静雯,霍思燕,黄圣依以及邓莎。 从第一集来看,获赞最多的组合是...
    原子妈咪阅读 456评论 0 0
  • 「关于迟迟没有回应的书评」 首先肯定是很感谢大家可以有空来看一看我的博物馆。虽然文章不算很多,也没有按时更…但是这...
    冉肆阅读 199评论 0 0