今天遇到一个奇怪的问题,代码如下:
public static String utfToUni(String str) {
if (str == null) {
return str;
}
try {
byte[] ss = str.getBytes("UTF-8");
str = new String(ss, "UnicodeBig");
} catch (UnsupportedEncodingException e2) {
e2.printStackTrace();
}
return str;
}
public static void main(String... strings) {
System.out.print(Test.utfToUni("h"));
}
修改代码如下:
public static String utfToUni(String str) {
if (str == null) {
return str;
}
try {
byte[] ss = str.getBytes("UTF-8");
ss = Test.patch(ss);
str = new String(ss, "UnicodeBig");
} catch (UnsupportedEncodingException e2) {
e2.printStackTrace();
}
return str;
}
/**
* 不足补0
*
* @param b
* @return
*/
public static byte[] patch(byte[] b) {
byte[] ss;
if (b.length % 2 != 0) {
ss = new byte[b.length + 1];
System.arraycopy(b, 0, ss, 0, b.length);
ss[b.length] = 0;
return ss;
}
return b;
}
如此,结果就出来了,我自己分析下,是因为UnicodeBig是两个字节的,如果是单字节就会转换出错,不知道确切该如何解释!
分享到:
相关推荐
"CharsetConv"类提供了一个工具,帮助开发者在ANSI、Unicode(Little Endian和Big Endian)、UTF-8及UTF-8+BOM之间灵活转换,从而避免编码问题带来的困扰。通过深入学习和实践,开发者可以更好地应对各种编码挑战,...
读取ANSI 明码文件 读取Unicode 明码文件 读取Unicode big endian 明码文件 读取UTF-8 明码文件 读取UTF8 Bom 明码文件 读取UTF16-LE 明码文件 读取UTF16-BE 明码文件 到多字节字符串 扩展类CFilePlainCode
VC ANSI环境下按行读取ANSI、UNICODE、UNICODE big endian、UTF-8四种文本文件 本资源摘要信息介绍了如何在VC ANSI环境下按行读取四种不同编码格式的文本文件,包括ANSI、UNICODE、UNICODE big endian和UTF-8。通过...
ANSI --> Unicode ANSI --> Unicode big endian...UTF-8 --> Unicode big endian ansi转别的,不检验BOM,一律作为ansi编码进行转换 unicode转别的,首先检验BOM,不合格不转换 utf8转别的,首先检验BOM,不合格不转换
Txt文件编码批量转换器用于批量转换txt文本文档的编码格式。通常,我们电脑里的txt文件都是ASNI编码,当放到手机或MP3里时,打开看到的往往...目前,它支持ASNI、UTF-8、Unicode和Unicode big endian等编码的相互转换。
UTF-8是一种变长的Unicode编码方式,它可以表示世界上几乎所有的字符。UTF-8最大的优点在于其兼容性,它在互联网上被广泛采用,因为大多数现代网页和编程语言都默认支持UTF-8。UTF-8编码的一个特点是,英文和很多...
常见的字符集有ASCII、GB2312、GBK、Big5和Unicode等。其中,ASCII主要包含英文字符,GB2312是中国大陆的基础汉字字符集,GBK是对GB2312的扩展,增加了更多的汉字和符号;而Unicode是一个国际标准,包含了世界上几乎...
delphi 6-XE读取ANSI,unicode,unicode big,utf-8,utf-8BOM文件,保存utf8
本篇文章将深入探讨标题中提及的几种字符编码:Text、ANSI、Unicode(包括Little Endian和Big Endian)、UTF-8以及UTF-7,并介绍它们之间的转换。 1. **Text编码**: 在Windows系统中,通常所说的"Text"编码是指...
- **Big5转Unicode**:先将Big5编码的字符串解码为字节流,再将该字节流按照Big5编码解码为Unicode。 - **Unicode转Big5**:先将Unicode编码的字符串解码为字节流,再将该字节流按照Big5编码解码。 #### 五、Java...
本文将深入探讨“unicode转gb18030编码”的相关知识点,并基于C语言的实现进行详细阐述。 首先,让我们了解两种编码体系:Unicode和GB18030。 **Unicode** 是一个国际标准,它定义了一个统一的字符集,涵盖了世界...
(包括ANSI、UNICODE、UNICODE big endian、UTF-8)格式的文本文件 */ //核心算法:CStdioFileEx继承自CStdioFile, 覆盖CStdioFile的 BOOL ReadString(CString& rString)方法, // 根据不同文件编码特征,寻找文件...
《中文编码转换器详解:Big5、GBK、Unicode与UTF8的互换之道》 在计算机世界里,字符编码是沟通人类语言与机器之间的重要桥梁。本文将详细讲解标题所提及的“中文 Big5/GBK/Unicode/UTF8 内码转换器”这一工具,...
对于非UTF-32编码,还需要了解字节顺序,例如小端序(little-endian)和大端序(big-endian)。C语言的标准库中并没有直接支持Unicode的函数,但可以通过第三方库如ICU(International Components for Unicode)或者...
2. **字节序问题**:Unicode编码有大端序(Big-Endian)和小端序(Little-Endian)之分。在转换过程中,需要考虑到目标Unicode编码的字节顺序,确保数据正确解码。例如,如果目标是UTF-16,那么在某些平台上可能需要...
首先,我们来看标题中的"utf-gb-big5",这代表了UTF-8、GBK(GB2312)和Big5三种编码格式。UTF-8是一种广泛使用的多字节编码,能表示Unicode字符集中的所有字符;GBK是中国大陆的标准,兼容GB2312,扩展了更多的汉字...
例如,GBK编码不包含所有Unicode字符,所以当从UTF-8转GBK时,非GBK范围内的字符可能需要特殊处理。同样,从GBK转BIG5也存在类似的问题,因为BIG5只覆盖了部分繁体中文字符。 总的来说,这款“utf8 gbk big5 多编码...
gbk, gb2312,big5,unicode,utf-8,utf-16的区别
2. Unicode转UTF-8: - Unicode码点转换为UTF-8的过程相对复杂,因为UTF-8编码是变长的,根据Unicode码点的大小,可能会占用1到4个字节。 - 对于小于128的码点(ASCII字符),直接用单字节表示,最高位为0。 - ...
最后,UTF(Unicode Transformation Format)是基于Unicode字符集的编码方式,包括UTF-8、UTF-16、UTF-32等多种变体。Unicode是一个包含几乎世界上所有字符的统一编码标准,不论简体、繁体还是其他语言,都能在...