utf8和gbk可以直接转换么

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了utf8和gbk可以直接转换么相关的知识,希望对你有一定的参考价值。

JS中的字符串本身就是以字符来存储,而非字节,所以没有所谓的gbk或utf8;而encodeURI本身就会把字串以utf8编码进行url编码;想要以gbk形式转换,就应该以Buffer来按字节处理。应该这样写:var titleBuffer = new Iconv('UTF-8', 'GBK').convert('数学');  // 不要toString,直接以字节数组形式存于buffer。

(1)utf8_encode是PowerBuilder的函数,该函数将 data 字符串转换为 UTF-8 编码,并返回编码后的字符串。UTF-8 是一种用于将宽字符值转换为字节流的 Unicode 的标准机制。

(2)GBK即汉字内码扩展规范,K为扩展的汉语拼音中"扩"字的声母。英文全称Chinese Internal Code Specification。GBK编码标准兼容GB2312,共收录汉字21003个、符号883个,并提供1894个造字码位,简、繁体字融于一库。GB2312码是中华人民共和国国家汉字信息交换用编码,全称《信息交换用汉字编码字符集--基本集》,1980年由国家标准总局发布。基本集共收入汉字6763个和非汉字图形字符682个,通行于中国大陆。新加坡等地也使用此编码。GBK是对GB2312-80的扩展,也就是CP936字码表 (Code Page 936)的扩展(之前CP936和GB 2312-80一模一样)。

参考技术A 基础概念:

1 字符集
字符集就是编码的集合,例如unicode、GBK、GB2312等都属于字符集。

2 编码
编码就是字符的表现形式,例如unicode字符集就能够用UTF-8、UTF-16和UTF-32编码。

GBK与UTF-8转换的核心问题分析。
GBK
是一种字符集,而UTF-8是一种编码,因此通常我们研究的GBK与UTF-8的转换问题,其实就是GBK与Unicode字符集的转化问题,由于GBK
和Unicode的字符(主要讨论汉字字符)之间没有必然的联系,因此通常是采用查表的方法来实现GBK和Unicode之间的转化。
在完成GBK与Unicode编码的转化后,剩下的工作就是如何把Unicode以UTF-8的形式表现出来了。


清楚编码问题,接下来要做的就是如何进行编码转换?在linux平台下,有iconv()函数可供使用,那么在Windows平台下该如何处理呢?其实处
理的方法有很多,如Windows API / IBM ICU4C
等,作者推荐使用windows平台下的iconv()函数,因为相对于使用Windows
API,iconv库可以方便的跨平台;而相对于IBM公司的ICU4C, iconv库要小很多。

下面给出几个windows下 iconv库的链接:
(1) MinGW使用的编译好的库,能够直接使用。(下载如图所示的包,放在MinGW中的include和lib目录即可)
http://sourceforge.net/projects/mingw/files/MinGW/Base/libiconv/libiconv-1.14-2/

(2) GNU开源源代码,需要之间编译成相应的动态库或者是静态库。
http://www.gnu.org/software/libiconv/
这个iconv源代码需要自己编译。下面给出在Windows下使用MinGW和MSYS编译的过程。
(a) 安装autoconf工具
(b) 依次执行下列命令(编译为静态库)
./configure --prefix=/home --enable-static --disable-shared
make
make install
那么编译后,在/home目录中就会看到编译后的输出。本回答被提问者和网友采纳

encode和decode

编码格式主要有:Unicode、utf-8、gbk、utf-16等
unicode是utf-8、gbk等的父编码,所有子编码都可以转换成Unicode编码。然后转换成其他子编码。但是子编码之间是不可以进行转换的。(比如utf-8可以先转换成Unicode,然后再从Unicode转换成gbk;但是不能直接从utf-8转换成gbk)
技术分享
一、编码、解码
python中用encode和decode来进行编码和解码:
encode:将Unicode的编码转换成其他格式的编码
如str1.encode(‘gbk‘),表示将unicode编码的字符串转换成gbk 编码。 
 
decode:将其他格式的编码转换成Unicode的编码格式
str2.decode(‘gbk ‘),表示将gbk 编码的字符串转换成unicode编码。 
 
二、判断字符串的的编码格式
通过repr函数来查看变量给python看的形式,不同的编码格式,存储中文的结果不同,比如下面的例子。
 
“测试test”,使用不同的编码格式的结果如下:
unicode:‘u6d4bu8bd5test‘
unicode一般是u开头,后边跟4位的数字或字母,1个u对应一个汉字
utf-8:‘xe6xb5x8bxe8xafx95test‘
utf-8一般是x开头,后面跟两位字母或数字,3个x代表一个汉字
gbk:‘xb2xe2xcaxd4test‘
gbk也是x开头,后面跟两位字母或数字,2个x代表一个汉字
 
三、其他注意点
1.python3默认编码改成了unicode,基本上不存在编码问题
技术分享

以上是关于utf8和gbk可以直接转换么的主要内容,如果未能解决你的问题,请参考以下文章

QT中将gbk字符转换为utf-8字符

UTF8怎么换成GBK

易语言如何把GBK编码转换成UTF8?好的追加50

oracle编码gbk加载utf-8文件需要转码么?

怎么转换为utf8有BOM编码

php--utf8和gbk相互转换