- 浏览: 56093 次
- 性别:
- 来自: 深圳
文章分类
最新评论
问:怎样将GBK 编码的汉字转换成为 UTF-8 编码的汉字?
[其实应这样问:怎样将GBK 编码的字节数组转换成为 UTF-8 编码的字节数组,
都是汉字有什么不同?]
答: new String(str.getBytes("gbk"),"utf-8");
其实这个答案非常错误,你可试一下,无论str是任何中文字符串,返回的结果都将是???.
问题在于str.getBytes("gbk")返回的是GBK格式的字节数组,即存在于GBK编码集中,
也就是说按GBK方式,这个字节数组可以转换成正确字符串,然而你偏要按Utf-8方式转换他.
而这个字节数组所代表的编码在utf-8编码集中不存在,所以显示乱码.
那么怎么转换才是正确呢,首先需清楚一个概念,所有的字符串在内存中都是换Unicode存储的
(严格的说是UTF-16).我们要先把GBK编码的字节数组转换为Unicode:
str = new String(buf,"GBK"); 然后再编码成 UTF-8的字节数组:
str.getBytes("UTF-8") 这样就完成了转换.
[其实应这样问:怎样将GBK 编码的字节数组转换成为 UTF-8 编码的字节数组,
都是汉字有什么不同?]
答: new String(str.getBytes("gbk"),"utf-8");
其实这个答案非常错误,你可试一下,无论str是任何中文字符串,返回的结果都将是???.
问题在于str.getBytes("gbk")返回的是GBK格式的字节数组,即存在于GBK编码集中,
也就是说按GBK方式,这个字节数组可以转换成正确字符串,然而你偏要按Utf-8方式转换他.
而这个字节数组所代表的编码在utf-8编码集中不存在,所以显示乱码.
那么怎么转换才是正确呢,首先需清楚一个概念,所有的字符串在内存中都是换Unicode存储的
(严格的说是UTF-16).我们要先把GBK编码的字节数组转换为Unicode:
str = new String(buf,"GBK"); 然后再编码成 UTF-8的字节数组:
str.getBytes("UTF-8") 这样就完成了转换.
发表评论
-
高精度
2011-08-31 20:40 978之前提到过在商业运算中要使用BigDecimal来进行相关的钱 ... -
java中如何进行高精度运算
2011-08-31 20:32 781import java.math.BigDecimal; im ... -
win7下安装vs2008
2011-01-09 23:28 845在win7下安装VS2008有点不太让人愉快,不过白痴还是找到 ... -
设置响应头字段的些许应用
2010-12-11 13:04 1049禁止浏览器缓存当前文档内容 只要增加如下的响应头字段: r ... -
正则表达式
2010-12-11 12:39 572整理资料如下: \\ 反斜杠 \t 间隔 ('\u0009' ... -
应该懂的基础问题
2010-12-11 12:14 676问题一:我声明了什么! String s = &quo ... -
Java中的堆栈
2010-12-11 10:59 633Java把内存划分成两种:一种是栈内存,一种是堆内存。 ... -
Java IO 小结
2010-12-11 10:51 588什么是数据流 ----------数据流是指所有的数据通信通道 ... -
进制转换
2010-11-30 20:42 783计算机操作里面时常要牵涉到二进制、十进制、十六进制等。特别是在 ... -
多叉树解决复杂表头问题
2010-11-30 20:21 760现代化WEB项目中少不了要用到报表展现.对于中国式报表来说,复 ... -
关于java编码的转换
2010-11-30 20:17 568问:怎样将GBK 编码的汉字转换成为 UTF-8 编码的汉 ... -
编译器报:未调用原型函数(是有意用变量定义的吗?)(本文为原创,转载清注明出外)
2010-11-30 20:08 1801MSDN解释:编译器检测到未使用的函数原型。如果有意将该原型作 ... -
C++类型转换运算符重载
2010-11-30 20:06 841在C++中有一个特殊的运算符重载方法--类型转换运算符重载,形 ... -
ATL分解字符串
2010-11-30 20:05 738一个简单的分解字符串的方法: Code vector< ... -
java字符集(三)之java.io
2010-11-30 20:04 915java IO 的输出分两种,字节流: InputStream ... -
java字符集(二)
2010-11-30 20:03 653知道java的字符集编码,那么java是怎么读取内存中的字节转 ... -
编码字符集与字符集编码的区别(转)
2010-11-30 20:03 646需要再一次强调的是,无论历史上的UCS还是现如今的Unicod ... -
Unicode与UCS的历史恩怨(转载)
2010-11-30 19:59 543ASCII及相关标准 ... -
Java字符集(一)
2010-11-30 19:57 651UNICODE,GBK和BIG5就是编码的值,而utf-8,u ...
相关推荐
字符转换,转换字符,字符转换,转换字符,字符转换,转换字符,字符转换,转换字符,字符转换,转换字符,字符转换,转换字符,字符转换,转换字符,字符转换,转换字符,
《Convert字符转换器:深入解析与应用》 在信息技术领域,字符编码的转换是一项至关重要的工作,它涉及到数据的正确解读和传输。"Convert字符转换器"是一款专为此目的设计的实用工具,允许用户轻松地将字符代码转换...
在本题目"OJ_字符转换University"中,我们面临的是一个在线判断(Online Judge,简称OJ)平台上的编程挑战。题目没有提供具体的入口程序和测试用例,但我们可以根据标签和文件名称来推测问题的核心内容。标签包括"OJ...
针对x86平台,汇编语言课程设计,字符转换,可以实现基本的输入字符,大小写转换、16进制,8进制,10进制,进制之间的转换
在标题"字符转换16进制数工具"和描述"字符转换16进制数、字符内码提取,实用的字符转化小工具"中,我们可以深入探讨以下几个核心知识点: 1. **字符编码**:字符编码是将字符与数字对应起来的方式,常见的有ASCII码...
字符之间的转换支持:单字符转换、MSSQL转换、Oracle转换、字符集转换、URL反转、URL正传、URL转义、宽字符转换
Unicode码字符转换器是一款工具,主要用于帮助编程人员和其他用户将任意字符转化为Unicode编码。Unicode是一种国际标准,旨在统一全球各种语言的文字表示,包括中文在内的多种字符集都可以在Unicode中找到对应的编码...
标题中的“字符转换器 3.0.zip”指的是一个压缩包文件,内含一个字符转换工具的最新版本,即“字符转换器3.0版.exe”。这个工具主要用于处理字符编码和数值转换,帮助用户在不同的字符集和数值系统之间进行转换。 ...
国际民航组织特殊字符转换规则.pdf
pokesav字符转换器实际上是一个帮助玩家修改游戏语言的软件,通过简单的字符转换,即可将游戏某个地方的语言进行修改,而修改的文字可根据用户的兴趣进行编辑,是目前来讲最为实用的一款。另外,利用pokesav字符转换...
在C#.NET编程中,字符转换是一个非常基础且重要的概念,尤其对于处理数据类型转换的开发者来说。本文将深入探讨C#中字符转换的各种方法,包括装箱/拆箱、别名、数值类型间的转换、字符编码(ASCII与Unicode)、字符...
在IT领域,字符转换与16进制编码是常见的数据表示和处理技术,尤其在编程、网络通信和数据存储中有着广泛的应用。16进制(Hexadecimal)是一种逢16进1的进位制,它使用0到9的数字以及A到F的字母来表示数值,通常用于...
window与linux字符转换
此压缩包“Excel字符转换技巧三则.rar”提供了一些实用的方法,帮助用户更有效地进行字符操作。下面将详细解释这些技巧: 1. 英文字母大小写转换: Excel提供了内置功能来实现字母大小写的转换。在“技巧164 字符...
C#开发的字符转换工具.可以将字符转换成ascii 也可以用ascii转换成字符串。加密js的利器
字符转换工具,用于转换编码之类的字符转换工具,用于转换编码之类的字符转换工具,用于转换编码之类的字符转换工具,用于转换编码之类的字符转换工具,用于转换编码之类的字符转换工具,用于转换编码之类的字符转换...
下面将详细讨论字符集、字符转换以及`libiconv`库的相关知识点。 **字符集(Character Set)** 字符集是计算机用来表示文本的一组符号及其对应的编码。常见的字符集有ASCII、ISO 8859系列、GB2312、GBK、Big5、UTF-...
液晶字符转换器是一种工具,主要用于将汉字或其他字符转换为适合在液晶显示屏(LCD)上显示的编码。在嵌入式系统、电子设备或小型手持设备中,液晶显示器常常被用来显示信息,包括文字。由于液晶屏的显示能力有限,...
将字符转换成16进制数字显示并存在文件中
图片转换为字符画的工具,也被称为“图片字符转换器”,是一种创新的图像处理软件,它将普通的位图或矢量图转换成由各种字符组成的艺术作品。这种技术基于ASCII艺术,利用计算机屏幕上的不同字符来模拟像素的颜色和...