关于字符串和byte数组在java和ios之间兼容的解决办法。
2012-07-19 10:09
495 查看
之前在java上写过String转为byte数组的代码,后来在开发iPhone程序的时候,发现也需要把NSString转为byte数组,并且需要达到跟java程序兼容。但是发现java自身的默认编码机制为iso-8859-1,而ios的默认编码机制为utf-8,所以直接编码并不能达到两者兼容的问题。后来查阅相关资料,最后解决了编码兼容的问题,而且中英文都通用。
如下为java代码:
ios代码:
编码达到了一致!
如下为java代码:
String str = "你好啊,aBc!"; ByteArrayOutputStream baos = new ByteArrayOutputStream(); DataOutputStream outputstream = new DataOutputStream(baos); outputstream.writeChars(str); byte[] contents = baos.toByteArray(); for (int i = 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
编码达到了一致!
相关文章推荐
- 关于字符串和byte数组在java和ios之间兼容的解决办法
- 关于字符串和byte数组在java和ios之间兼容的解决办法
- 关于字符串和byte数组在java和ios之间兼容的解决办法。
- JAVA里面关于byte数组和String之间的转换问题
- Java中字符串和byte数组之间的相互转换
- JAVA里面关于byte数组和String之间的转换问题
- 关于Java编写多行注释遇到方法字符串中正好也有注释符号产生冲突的解决办法
- 深入 JAVA里面关于byte数组和String之间的转换问题
- JAVA里面关于byte数组和String之间的转换问题
- Java中字符串与byte数组之间的相互转换
- 深入 JAVA里面关于byte数组和String之间的转换问题
- JAVA里面关于byte数组和String之间的转换问题
- [原]深入 JAVA里面关于byte数组和String之间的转换问题
- [原]深入 JAVA里面关于byte数组和String之间的转换问题
- Java中字符串与byte数组之间的相互转换
- Java:关于Integer整数与byte、byte数组之间的转换
- JAVA里面关于byte数组和String之间的转换问题
- iOS 关于数组、字典等数据类型异常操作crash的解决办法
- 关于 Des加密(Android与ios 与后台java服务器之间的加密解密)
- Java关于byte[]与double之间的转换