php 编码转换-字符编码转换

面的两段VB代码分别针对UTF-8(UTF8ENCODEURI)和GB2312(GBKENCODEURI)进行了编码的转换。

    PRIVATE SUB COMMAND1_CLICK()
        DEBUG.PRINT (UTF8ENCODEURI("汉字"))
        DEBUG.PRINT (GBKENCODEURI("汉字"))
    END SUB

    FUNCTION UTF8ENCODEURI(SZINPUT)
        DIM WCH, UCH, SZRET
        DIM X
        DIM NASC, NASC2, NASC3

        IF SZINPUT = "" THEN
            UTF8ENCODEURI = SZINPUT
            EXIT FUNCTION
        END IF

        FOR X = 1 TO LEN(SZINPUT)
            WCH = MID(SZINPUT, X, 1)
            NASC = ASCW(WCH)

            IF NASC < 0 THEN NASC = NASC + 65536

            IF (NASC AND &HFF80) = 0 THEN
                SZRET = SZRET & WCH
            ELSE
                IF (NASC AND &HF000) = 0 THEN
                    UCH = "%" & HEX(((NASC 2 ^ 6)) OR &HC0) & HEX(NASC AND &H3F OR &H80)
                    SZRET = SZRET & UCH
                ELSE
                    UCH = "%" & HEX((NASC 2 ^ 12) OR &HE0) & "%" & _
                    HEX((NASC 2 ^ 6) AND &H3F OR &H80) & "%" & _
                    HEX(NASC AND &H3F OR &H80)
                    SZRET = SZRET & UCH
                END IF
            END IF
        NEXT

iconv() 函数
Definition and Usage
定义和用法
iconv()函数的作用是:转换字符串的编码。

Description
string iconv ( string in_charset, string out_charset, string str )

Tips and Notes
注意点
注意:第二个参数,除了可以指定要转化到的编码以外,还可以增加两个后缀://TRANSLIT 和 //IGNORE,其中 //TRANSLIT 会自动将不能直接转化的字符变成一个或多个近似的字符,//IGNORE 会忽略掉不能转化的字符,而默认效果是从第一个非法字符截断。

mb_convert_encoding() 函数
Definition and Usage
定义和用法
mb_convert_encoding()函数的作用是:转换字符串的编码。

Description
string mb_convert_encoding ( string str, string to-encoding [, mixed from-encoding])

注意:但是需要先enable mbstring 扩展库。
两者区别:mb_convert_encoding 中根据内容自动识别编码;mb_convert_encoding功能强大,但是执行效率比iconv差太多;

总结:一般情况下用 iconv,只有当遇到无法确定原编码是何种编码时才用 mb_convert_encoding 函数.

1、把 GBK 编码字串转换成 UTF-8 编码字串 view plaincopy to clipboardprint?
<?php  
header("content-Type: text/html; charset=Utf-8");  
echo mb_convert_encoding("你是我的好朋友", "UTF-8", "GBK");  
?>  

2、把 UTF-8 编码字串转换成 GB2312 编码字串 view plaincopy to clipboardprint?
// 注意将此文件存盘成   utf-8 编码格式文件再测试  
<?php  
header("content-Type: text/html; charset=gb2312");  
echo mb_convert_encoding("你是我的好朋友", "gb312", "utf-8");  
?>   

信源:fleaphp.net
mb_convert_encoding 函数为php内部多字节字符串编码转换函数,可以在有需要的使用场合(如:解决在GB2312编码环境下使用Ajax产生的中文字乱码的问题)方便进行编码转换,以解决网页乱码的问题,使用非常方便,效率非常高,
几乎支持所有编码。PHP 4 >= 4.0.6、PHP 5 版本支持。

函数原型: 引用:
/**
* 多字节字符串编码转换函数
*
* @param string str 需要进行编码转换的字符串
* @param string to_encoding 指定转换为某种编码,如:gb2312、gbk、utf-8等
* @param mixed from_encoding 混合指定原来字串的编码,如:同时指定 JIS, eucjp-win, sjis-win 混合编码
* @return string
string mb_convert_encoding ( string str, string to_encoding [, mixed from_encoding] )使用举例:

1、把 GBK 编码字串转换成 UTF-8 编码字串 view plaincopy to clipboardprint?
<?php  
header("content-Type: text/html; charset=Utf-8");  
echo mb_convert_encoding("你是我的好朋友", "UTF-8", "GBK");  
?>  

<?php header("content-Type: text/html; charset=Utf-8"); echo mb_convert_encoding("你是我的好朋友", "UTF-8", "GBK"); ?>
2、把 UTF-8 编码字串转换成 GB2312 编码字串 view plaincopy to clipboardprint?
// 注意将此文件存盘成   utf-8 编码格式文件再测试  
<?php  
header("content-Type: text/html; charset=gb2312");  
echo mb_convert_encoding("你是我的好朋友", "gb312", "utf-8");  
?>   

// 注意将此文件存盘成   utf-8 编码格式文件再测试 <?php header("content-Type: text/html; charset=gb2312"); echo mb_convert_encoding("你是我的好朋友", "gb312", "utf-8"); ?>
3、对整个页面进行转换
该方法适用所有编码环境。这样把前128个字符以外(显示字符)的字符集都用   NCR(Numeric character reference,如“汉字”将转换成“汉字”这种形式)来表示,这样的编码在任意编码环境下页面都能正 常显示。

在php文件的头部加上下面三行代码: view plaincopy to clipboardprint?
mb_internal_encoding("gb2312");  // 这里的gb2312是你网站原来的编码  
mb_http_output("HTML-ENTITIES");  
ob_start('mb_output_handler');  

mb_internal_encoding("gb2312");   // 这里的gb2312是你网站原来的编码 mb_http_output("HTML-ENTITIES"); ob_start('mb_output_handler');
使用mb_convert_encoding 函数需启用PHP 的mbstring (multi-byte string)扩展。

查看php的信息页面,如果出现如下画面:
   2008-10-16_111050.png (137.62 KB)
2008-10-16 12:01

则说明已启用mbstring (multi-byte string)扩展支持。

如果没有出现上面的画面,则需要做如下设置,让php支持该扩展。

1、windows 服务器环境

编辑 php.ini 文件,将; extension=php_mbstring.dll 前面的 ; 去掉,重启网页服务器。

2、Linux服务器环境

在编译配置时加入 --enable-mbstring=cn 编译参数,再进行PHP的编译安装。

 

时间: 2024-09-17 04:54:03

php 编码转换-字符编码转换的相关文章

【字符编码】字符编码的奥秘

       字符编码相信是每个程序员的噩梦,只要是有中文的地方,总是会遇到各种编码的问题,并且这种问题还非常难缠,尤其在linux上,因为上面很多软件都是针对 英语国家开发的,是不会考虑其他语种编码问题.在遇到编码的无数大坑之后,我决定仔细研究下编码问题,因为这就像一道坎一直横在你面前,每次到这里你都会 跌到,每次爬起来之后,你都若无其事,这样的人被称作战士,真正的战士.可惜是个力量战士,做为新时代的智力战士,当然不能在那跌到然后又在这继续跌到.      文件的存储方式:      文件都有

浅谈JavaScript中的字符编码转换问题_基础知识

要获得字符的Unicode编码,可以使用string.charCodeAt(index)方法,其定义为:    strObj.charCodeAt(index)       index为指定字符在strObj对象中的位置(基于0的索引),返回值为0与65535之间的16位整数.例如: var strObj = "ABCDEFG"; var code = strObj.charCodeAt(2); // Unicode value of character 'C' is 67      

php字符编码转换之gb2312转为utf8

string iconv ( string in_charset, string out_charset, string str ) 注意:第二个参数,除了可以指定要转化到的编码以外,还可以增加两个后缀://TRANSLIT 和 //IGNORE,其中 //TRANSLIT 会自动将不能直接转化的字符变成一个或多个近似的字符,//IGNORE 会忽略掉不能转化的字符,而默认效果是从第一个非法字符截断. Returns the converted string or FALSE on failur

计算机字符编码详解与汇总

前言        计算机中的数据是以二进制格式表示的(其中8位二进制称为一个字节,比如00100101就是一个字节.通常为了更方便的表示二进制数据,也可以转换成16进制表示出来,比如00100101就可以用0x25来表示).把所有字符转换成二进制数据的规则就是字符编码.字符编码的方式很多,本文对每一种字符编码做尽可能详细的讲解.        本文中红色字体或加粗字体是需要重点理解或者记忆的. 1. ASCII码        ASCII是美国国家标准定制的一套基于拉丁字母的电脑编码系统,可表

字符编码详解——彻底理解掌握编码知识,“乱码”不复存在

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://polaris.blog.51cto.com/1146394/377468  每一个程序员都不可避免的遇到字符编码的问题,特别是做Web开发的程序员,"乱码问题"一直是让人头疼的问题,也许您已经很少遇到"乱码"问题,然而,对解决乱码的方法的内在原理,您是否明白?本人作为一个程序员,在字符编码方面同样遇到不少问题,而且一直对各种编码懵懵懂懂.不清不楚:

快速入手Python字符编码_python

前言 对于很多接触Python的人而言,字符的处理和语言整体的温顺可靠相比显得格外桀骜不驯难以驾驭. 文章针对Python 2.7,主要因为3对的编码已经有了很大的改善并且实际原理一样,更改一下操作命令即可. 了解完本文,你可以轻松解决文字处理,特殊平台(Windows?)下的编码,爬虫编码等问题. 阅读建议 本文分为如下几个部分:     1.原理     2.具体操作     3.建议的使用习惯     4.疑难问题解答 如果想要了解我给出的使用习惯,可以直接跳到建议的使用习惯. 如果只想要

MySQL字符编码设置方法_Mysql

通过show variables like 'character_set%%';查看编码 修改mysql的编码方式可以有以下几个: 1.通过配置文件修改my.ini(windows下)或/etc/my.cnf(linux下) 分别添加如下内容 [mysqld] character_server_set=utf8 [mysql] default-character-set=utf8 [mysql.server] default-character-set=utf8 [mysql_safe] def

JAVA之旅(三十)——打印流PrintWriter,合并流,切割文件并且合并,对象的序列化Serializable,管道流,RandomAccessFile,IO其他类,字符编码

JAVA之旅(三十)--打印流PrintWriter,合并流,切割文件并且合并,对象的序列化Serializable,管道流,RandomAccessFile,IO其他类,字符编码 三十篇了,又是一个阳光明媚的周末,一个又一个的周末,周而复始,不断学习,前方的路你可曾看见?随我一起走进技术的世界,流连忘返吧! 一.打印流PrintWriter 打印流有PrintWriter和PrintStream,他的特点可以直接操作输入流还有文件 该流提供了打印方法,可以将各种数据类型原样打印 file对象

JavaScript将字符串转换成字符编码列表的方法

 这篇文章主要介绍了JavaScript将字符串转换成字符编码列表的方法,实例分析了javascript中charCodeAt函数的使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下     本文实例讲述了JavaScript将字符串转换成字符编码列表的方法.分享给大家供大家参考.具体如下: JavaScript将字符串转换成字符编码列表,例如foo转换成 [112,111,111] 方法 1: JavaScript 1.6 ? 1 2 Array.map('foo', function(x)