首页 技术教程 实用代码 注册破解 正则表达式 网址导航 电子书籍

UTF-8,GBK,GB2312编码规则与检测

UTF8 是兼容 ascii 的,所以 0~127 就和 ascii 完全一致了。gbk 的第一字节是高位为 1 的,第 2 字节可能高位为 0 。这种情况一定是 gbk ,因为 UTF8 对 >127 的编码一定每个字节高位为 1 。另外,对于中文,UTF8 一定编码成 3 字节。(似乎亚洲文字都是,UTF8 中双字节好象只用于西方字符集),所以型如 110***** 10****** 的,我们一概看成 gbk/gb2312 编码。这就解决了“位”的问题。汉字以及汉字标点(包括日文汉字等),在 UTF8 中一定被编码成:1110**** 10****** 10******连续汉字数量不是 3 的倍数的 gb2312 编码的汉字字符串一定不会被误认为 UTF8 。用了一些gbk 扩展字,或是插入了一些 ascii 符号的字...
类别:其它 - 字符编码    查看:162    更新:2014-06-06

UTF-8编码里边的no BOM和BOM

UTF-8 编码的文件可以分为no BOM 和 BOM两种格式何谓BOM? "EF BB BF" 这三个字节就叫BOM,BOM的全称叫做"Byte Order Mard".在utf-8文件中常用BOM来表明这个文件是UTF-8文件,而BOM的本意实在utf16中用来表示高低字节序列的。在字节流之前有BOM表示采用低字节序列(低字节在前面),而utf8不用考虑字节序列,所以其实有无BOM都可以。微软的记事本 Word 等只能正确打开含BOM的UTF8文件,然后UltraEdit却恰恰相反,回把BOMutf8文件 误认为ascii编码。UTF-8的BOM是EFBBBF,因为UE载入UTF-8文件会转成Utf16,上述的EFBBBF 在Utf16中是FFFE...
类别:其它 - 字符编码    查看:149    更新:2014-06-01

UTF-8字符集的基础知识

字符集简史在所有字符集中,最知名可能要数被称为ASCII的7位字符集了。它是美国信息交换标准委员会(American Standards Committee for Information Interchange)的缩写, 为美国英语通信所设计。它由128个字符组成,包括大小写字母、数字0-9、标点符号、非打印字符(换行符、制表符等4个)以及控制字符(退格、响铃等)组成。 但是,由于他是针对英语设计的,当处理带有音调标号(形如汉语的拼音)的欧洲文字时就会出现问题。因此,创建出了一些包括255个字符的由ASCII扩展的字符集。其中有一种通常被成为IBM字符集,它把值为128-255之间的字符用于画图和画线,以及一些特殊的欧洲字符。另一种8位字符集是ISO 8859-1 Lati...
类别:其它 - 字符编码    查看:159    更新:2014-06-01

一段把客户端的中文字串转换成UTF-8的代码

开发ASP.NET,我经常要在客户端的javascript代码中使用window.location='WebForm1.aspx?Param1=中文字串'来跳转页面,但在跳转之前必须要把中文字串转换成UTF-8的代码,否则如果中文字串中间存在空格之类的字符就会引起问题。 实际上IE 5.5+,Netscape 6+,Mozilla中已经有了转换函数,即encodeURIComponent,但对于低版本的浏览器则需要一下代码。/* ***************************** Most of this code was kindly ** provided to me by** Andrew Clover (and at doxdesk dot com)** http://and.doxdesk.com/ ;** in response to my plea in my blog at ** http://worldtimzone.com/blog/date/2002/09/24** It was unclear ...
类别:网页编程 - ASP.NET    查看:157    更新:2014-05-20

UTF-8转换成GB2312的全处理

主题:将UTF-8编码的字符串转化成GB2312的编码,没有对应编码的字符串转化为&#DEC; 的格式。如 회=>회 语言:PHP,Javascript 内容:浏览器用Javascript中encodeURI函数将字符串(包含非GB2312中字符)编码,GET请求到服务器,页面编码均为GB2312,服务器PHP脚本将请求数据转换成GB2312表示。 基础:   1. 单独使用iconv函数只能转换GB2312字符,外文字符无法转换   2. 没有现成的函数可以用   3. bindec()函数:将二进制格式的"01"字符串转换为十进制数   4. decbin()函数:将十进制数转换为二进制字符串,如decbin(224)="11100000"   思路:因为UT...
类别:网页编程 - PHP技术    查看:132    更新:2014-05-19

PHP实现gb2312、UTF-8等字符和unicode间的编码转换及PHP版unescape

<? /**  * 将字符串转换成unicode编码  *  * @param string $input  * @param string $input_charset  * @return string  */ function str_to_unicode($input, $input_charset = 'gbk'){  $input = iconv($input_charset, "gbk", $input);  preg_match_all("/[x80-xff]?./", $input, $ar);  $b = array_map('utf8_unicode_', $ar[0]);  $outstr = join("", $b);  return $outstr; } function utf8_unicode_($c, $input_charset = 'gbk'){  $c = iconv($input_charset, 'utf-8', $c);  return utf8_unicode($c); } // utf...
类别:网页编程 - PHP技术    查看:137    更新:2014-05-19

不用iconv库的gb2312与utf-8的互换函数

一份gb2312.txt(184799字节)确实显得太大了点,而且还要经unicode转换。这份对照表为51965字节,要小的多了。对于无法使用iconv函数库的场合还是很实用的。<?php//对照表的使用$filename = "gb2utf8.txt";$fp = fopen($filename,"r");while(! feof($fp)) {list($gb,$utf8) = fgetcsv($fp,10);$charset[$gb] = $utf8;}fclose($fp);//以上读取对照表到数组备用/** gb2312到utf-8 **/function gb2utf8($text, &$charset) {//提取文本中的成分,汉字为一个元素,连续的非汉字为一个元素preg_match_all("/(?:[x80-xff].)|[x01-x7f]+/",$text,$tmp);$tmp = $tmp[0];//分离出汉字$ar = array_intersect($tmp, array_keys($charset));//替换汉字...
类别:网页编程 - PHP技术    查看:117    更新:2014-05-19

PHP对GB编码动态转UTF-8几种方法评测

在《IP地址->地理位置转换的测评》一文中提到用ip2addr函数直接读取IP数据库文件是效率最高的,相比用MySQL数据库存储IP数据,用SQL查询是效率最低的。但是IP数据库文件QQWry.dat是GB2312编码的。现在我需要UTF-8编码的地理位置结果。如果用MySQL方法,可以在数据存入数据库时就转换为UTF-8编码,一劳永逸。但是QQWry.dat文件又无法修改,只能把ip2addr函数的输出结果再进行动态转换。动态转换GB->UTF-8编码至少有四种方法:用PHP的iconv扩展转换用PHP的mb_string扩展转换用对换表转换,对换表存储在MySQL数据库中用对换表转换,对换表存储在文本文件中前两种方法要服务器作了相应设置(编...
类别:网页编程 - PHP技术    查看:129    更新:2014-05-19

UTF-8到ACSII的转换(让自己的C++程序支持多语言)

我的思路是这样的:在配置文件(基本上使用XML格式)中采用UTF-8编码,这样世界上的任何文字就都可以显示了。但是如果直接将配置内容读出并显示,在你的C++程序里面肯定是乱码,那么怎么解决呢?步骤如下(直接看代码吧)char szUTF8 [] = {0xE4,0XBB,0XB7,0XE5,0X80,0XBC};//是汉语的价值两个字int nLen = MultiByteToWideChar( CP_UTF8, 0, szUTF8, -1, NULL, NULL );//得到UTF8编码的字符串长度,是2LPWSTR lpwsz = new WCHAR[nLen];MultiByteToWideChar( CP_UTF8, 0, szUTF8, -1, lpwsz, nLen );//转换的结果是UCS2格式的价值两个字int nLen1 = WideCharTo...
类别:程序开发 - C/C++    查看:117    更新:2014-05-19

MFC下Unicode到UTF-8格式的转换

UNICODE 通过用双字节来表示一个字符,从而在更大范围内将数字代码映射到多种语言的字符集。MFC 以宏的形式提供了将一般文本转换成 UNICODE 数据类型的途径。开发人员只需要稍微改变一下编写代码的习惯便可以轻松编写支持 UNICODE 的应用。定义部分:通用 多字节 宽字节_TCHAR/TCHAR char wchar_t_T 或_TEXT char 常量字符串 wchar_t 常量字符串 LLPTSTR char *(或win32下LPSTR) wchar_t *LPCTSTR const char * LPCSTR const wchar_t * 通用形式就是自动的判断当前是否定义了_UNICODE字符集,例 如果是的话typedef wchar_t TCHAR;不是的话typedef char TCHA...
类别:其它 - 字符编码    查看:193    更新:2014-05-09

UTF-8是什么

UTF-8(8-bit Unicode Transformation Format)是一种针对Unicode的可变长度字符编码,又称万国码。由Ken Thompson于1992年创建。现在已经标准化为RFC 3629。UTF-8用1到4个字节编码UNICODE字符。用在网页上可以同一页面显示中文简体繁体及其它语言(如日文,韩文)字符集简史在所有字符集中,最知名的可能要数被称为ASCII的7位字符集了。它是美国标准信息交换代码(American Standard Code for Information Interchange)的缩写, 为美国英语通信所设计。它由128个字符组成,包括大小写字母、数字0-9、标点符号、非打印字符(换行符、制表符等4个)以及控制字符(退格、响铃等)组成。但是,由于他是针对英语设计...
类别:其它 - 字符编码    查看:193    更新:2014-05-09

UTF-8编码的详细讲解

这篇文章说明了在 POSIX 系统 (Linux,Unix) 上使用 Unicode/UTF-8 所需要的信息. 在将来不远的几年里, Unicode 已经很接近于取代 ASCII 与 Latin-1 编码的位置了. 它不仅允许你处理处理事实上存在于地球上的任何语言文字, 而且提供了一个全面的数学与技术符号集, 因此可以简化科学信息交换. UTF-8 编码提供了一种简便而向后兼容的方法, 使得那种完全围绕 ASCII 设计的操作系统, 比如 Unix, 也可以使用 Unicode. UTF-8 就是 Unix, Linux 已经类似的系统使用 Unicode 的方式. 现在是你了解它的时候了. 什么是 UCS 和 ISO 10646? 国际标准 ISO 10646 定义了 通用字符集 (Universal Character Set, U...
类别:其它 - 字符编码    查看:188    更新:2014-05-09

ASP中操作UTF-8格式的文件

注意:这里说的ASP可不是ASP.net。 ASP由于是一种古老的语言,它的一些功能对UTF-8支持非常差。 比如,你想生成一个UTF-8格式的文件,使用常用的 Scripting.FileSystemObject 对象就不行。 Scripting.FileSystemObject 对象创建文件的函数,是下面方式: FileSystemObject.CreateTextFile(filename[,overwrite[,unicode]]) 其中的 unicode 属性是这样描述的: 可选项。Boolean 值指明是否以 Unicode 或 ASCII 文件格式创建文件。如果以 Unicode 文件格式创建文件,则该值为 True;如果以 ASCII 文件格式创建文件,则该值为 False。如果省略此部分,则假定创建 ASCII 文件。 我们是无法用这个函...
类别:网页编程 - ASP技术    查看:119    更新:2014-05-04