PHP UNICODE 编码转换

来源:百度知道 编辑:UC知道 时间:2024/05/17 20:52:35
我你他-abc
要转换成
我你他-abc

单个中文转成 UNICODE 的代码我知道 就是字符串这样的转换不知道怎么办了 麻烦高手帮忙解决一下` `

以下是 单个中文转成 UNICODE 的代码

function utf8_unicode($c) {
switch(strlen($c)) {
case 1:
return ord($c);
case 2:
$n = (ord($c[0]) & 0x3f) << 6;
$n += ord($c[1]) & 0x3f;
return $n;
case 3:
$n = (ord($c[0]) & 0x1f) << 12;
$n += (ord($c[1]) & 0x3f) << 6;
$n += ord($c[2]) & 0x3f;
return $n;
case 4:
$n = (ord($c[0]) & 0x0f) << 18;
$n += (ord($c[1]) & 0x3f) << 12;
$n += (ord($c[2]) & 0x3f) << 6;
$n += ord($c[3]) & 0x3f;
return $n;
}
}

$text = '你';
$text=iconv("UTF-8","GB2312",$text);
preg_match_all("/[\x80-\xff]?./",$text,$ar);
foreach($ar[0] as $v){
$unicodetext = "&#".utf8_unicode(iconv("GB2312","UTF-8&quo

Unicode是一个字符集,Unicode是定长的都为双字节.
这里我们常用的是utf8字符集编码,楼主是说的Unicode转换为UTF-8吧。

/**
* Unicode字符转换成utf8字符
* @param [type] $unicode_str Unicode字符
* @return [type] Utf-8字符
*/
function unicode_to_utf8($unicode_str) {
$utf8_str = '';
$code = intval(hexdec($unicode_str));
//这里注意转换出来的code一定得是整形,这样才会正确的按位操作
$ord_1 = decbin(0xe0 | ($code >> 12));
$ord_2 = decbin(0x80 | (($code >> 6) & 0x3f));
$ord_3 = decbin(0x80 | ($code & 0x3f));
$utf8_str = chr(bindec($ord_1)) . chr(bindec($ord_2)) . chr(bindec($ord_3));
return $utf8_str;
}

在我博客中,有专门对此的几篇博客
思路就是把字符串分解成一个个中文英文字符,再把中文字符转换成UNICODE码

<?
/**
* 将字符串转换成unicode编码
*
* @param string $input
* @param string $input_charset
* @return string
*/
function str_to_unicode($input, $input_charset = 'gbk'){
$input = iconv($input_ch