unicode转换utf8php
1. php里面怎样把utf-8编码的字符串 (如 \u5e7f), 重新解码成中文,多谢
这种字符串是unicode编码的,而不是utf-8。json_decode()可以自动将json中的unicode字符串转换为utf-8。你可以自己构造一个json来实现。
<?php
$str='u5e7fu4e1cu6df1u5733';
$json='{"foo":"'.$str.'"}';
$d=json_decode($json,true);
$str=$d['foo'];//这个就是你想要的
望采纳!
2. unicode编码转换用PHP实现将GB编码转换为UTF8
gb2utf8.php 文件定义了一个名为 GB2UTF8 的类,用于实现 GB 编码转换为 UTF8 编码。类内部包含了一个设置GB2312代码文件的函数 SetGb2312,用于加载GB2312编码表。该类还包含了一个转换函数 Convert,用于将输入的GB2312字符串转换为UTF8字符串。如果转换过程中出现错误,会记录错误信息在 $ErrorMsg 属性中。转换时,通过循环处理输入字符串中的每个字符,根据字符的编码范围,选择不同的转换逻辑,最终生成UTF8格式的字符串并保存在 $utf8 属性中。
在测试文件中,通过 Header 函数设置输出类型为 PNG 图像。使用 Imagecreate 创建一个 400x300 的图像对象。使用 ImageColorAllocate 分别定义黑色和白色字体颜色。接着,调用 gb2utf8.php 文件中的 gb2utf8 类实例,并传入待转换的 GB2312 字符串 "123abc中国456def测试正确"。调用 Convert 函数执行转换操作。使用 ImageTTFText 函数在图像上绘制转换后的 UTF8 字符串,字体为 SIMKAI.TTF,字体大小为 20。最后,使用 ImagePNG 将图像输出为 PNG 格式,并使用 ImageDestroy 删除图像对象。
这个代码示例展示了如何使用 gb2utf8.php 类将 GB 编码的中文文本转换为 UTF8 编码,并在图像上显示转换后的结果。确保在使用字体前先进行字体文件的正确设置,确保可以正确显示英文字符。通过这个测试文件,可以验证 gb2utf8 类的功能是否正常工作,并检查转换后的字符串是否正确显示在图像上。
3. 如何配置PHP UTF8 编码 配置文件
要输出UTF8格式时,加上以下语句:
header(”Content-Type: text/html; charset=UTF-8″)
php用UTF-8总结:
php文件本身必须是UTF-8编码。不像Java会生成class文件,避免这个问题
php要输出头:header(”Content-Type: text/html; charset=UTF-8″)
meta标签无所谓,有header所有浏览器就会按header来解析
所有外围都得用UTF8,包括数据库、×.js、×.css(CSS影响倒不大)
php本身不是Unicode的,所有substr之类的函数得改成mb_substr(需要装mbstring扩展);或者用iconv转码(基本上的linux都装了,没装的话download、tar、make、make install,很简单的)
my.ini:
[MySQL(和PHP搭配之最佳组合)]
default-character-set=utf8
[MySQL(和PHP搭配之最佳组合)d]
default-character-set=utf8
default-storage-engine=MyISAM
在[MySQL(和PHP搭配之最佳组合)d]下加入:
default-collation=utf8_bin
init_connect='SET NAMES utf8'
在需要做数据库操作的php程序前面加上
mb_internal_encoding('utf-8');
create table最后边加上ENGINE=MyISAM DEFAULT CHARSET=utf8 COLLATE=utf8_bin
phpMyAdmin/config.inc.php
$cfg['DefaultCharset'] = 'utf-8';
$cfg['RecodingEngine'] = 'iconv';
phpAdmin导出数据时
把"二进制区域使用十六进制显示"的勾去掉
特别郁闷的:文件系统函数不支持UTF-8!
4. 求PHP的常用编码方式以及它们各自的优缺点
常见的有:
utf-8编码 :
gbk编码
big5编码
UTF-8:Unicode TransformationFormat-8bit,允许含BOM,但通常不含BOM。是用以解决国际上字符的一种多字节编码,它对英文使用8位(即一个字节),中文使用24为(三个字节)来编码。UTF-8包含全世界所有国家需要用到的字符,是国际编码,通用性强。UTF-8编码的文字可以在各国支持UTF8字符集的浏览器上显示。如,如果是UTF8编码,则在外国人的英文IE上也能显示中文,他们无需下载IE的中文语言支持包。
GBK是国家标准GB2312基础上扩容后兼容GB2312的标准。GBK的文字编码是用双字节来表示的,即不论中、英文字符均使用双字节来表示,为了区分中文,将其最高位都设定成1。GBK包含全部中文字符,是国家编码,通用性比UTF8差,不过UTF8占用的数据库比GBD大。
GBK、GB2312等与UTF8之间都必须通过Unicode编码才能相互转换:
GBK、GB2312--Unicode--UTF8
UTF8--Unicode--GBK、GB2312
对于一个网站、论坛来说,如果英文字符较多,则建议使用UTF-8节省空间。不过现在很多论坛的插件一般只支持GBK。
BIG5是用于繁体中文的。
5. utf8_to_unicodeinPHP
从UTF8转换成unicode beta1.0
参数:mixed $string要转换的字符串
返回:unicode的十六进制编码
function utf8_to_unicode_hex( $string )
{
$length = strlen ( $string );
$outstring = "" ;
for ( $i = 0 ; $i< $length ; $i ++ )
{
$asc_value = ord ( $string [ $i ]);
if ( $asc_value >127 )
{
if ( $asc_value >= 192 && $asc_value<= 223 )
{
$str_dec = ( ord ( $string [ $i ]) & 0x3f )<< 6 ;
$i ++ ;
$str_dec += ord ( $string [ $i ]) & 0x3f ;
$str_hex = dechex ( $str_dec );
$outstring .= str_pad ( $str_hex , 4 , " 0 " , STR_PAD_LEFT);
}
elseif ( $asc_value >= 224 && $asc_value<= 239 )
{
$str_dec = ( ord ( $string [ $i ]) & 0x1f )<< 12 ;
$i ++ ;
$str_dec += ( ord ( $string [ $i ]) & 0x3f )<< 6 ;
$i ++ ;
$str_dec += ord ( $string [ $i ]) & 0x3f ;
$outstring .= dechex ( $str_dec );
}
elseif ( $asc_value >= 240 && $asc_value<= 247 )
{
$str_dec = ( ord ( $string [ $i ]) & 0x0f )<< 18 ;
$i ++ ;
$str_dec += ( ord ( $string [ $i ]) & 0x3f )<< 12 ;
$i ++ ;
$str_dec += ( ord ( $string [ $i ]) & 0x3f )<< 6 ;
$i ++ ;
$str_dec += ord ( $string [ $i ]) & 0x3f ;
$outstring .= dechex ( $str_dec );
}
else
{
$str_hex = dechex ( ord ( $string [ $i ]));
$outstring .= str_pad ( $str_hex , 4 , " 0 " , STR_PAD_LEFT);
}
}
return $outstring ;
}