字符编码转换函数

技术笔记 - PHP - PHP函数

发布时间:2020-02-02 22:41:00

admin 于  2020-02-02 22:41:00 编辑

iconv() | mb_convert_encoding()

1.iconv()

将字符串strin_charset转换编码到out_charset

语法

iconv(in_charset,out_charset,string)
参数 描述
in_charset 输入的字符集。
out_charset

输出的字符集。

如果你在 out_charset 后添加了字符串 //TRANSLIT,将启用转写(transliteration)功能。这个意思是,当一个字符不能被目标字符集所表示时,它可以通过一个或多个形似的字符来近似表达。 如果你添加了字符串 //IGNORE,不能以目标字符集表达的字符将被默默丢弃。 否则,会导致一个 E_NOTICE并返回 FALSE。

Caution//TRANSLIT 运行细节高度依赖于系统的 iconv() 实现(参见 ICONV_IMPL)。 据悉,某些系统上的实现会直接忽略 //TRANSLIT,所以转换也有可能失败,out_charset 会是不合格的。

string 要转换的字符串。
$text = "This is the Euro symbol '€'.";

echo 'Original : ', $text, PHP_EOL;
echo 'TRANSLIT : ', iconv("UTF-8", "ISO-8859-1//TRANSLIT", $text), PHP_EOL;
echo 'IGNORE   : ', iconv("UTF-8", "ISO-8859-1//IGNORE", $text), PHP_EOL;
echo 'Plain    : ', iconv("UTF-8", "ISO-8859-1", $text), PHP_EOL;

2.mb_convert_encoding()

string的字符编码从可选的from_encoding转换到to_encoding

语法

mb_convert_encoding(string,to_encodeing,from_encoding)
参数 描述
string 要转换的字符串。
to_encodeing 要转换成的编码类型。
from_encoding 在转换前通过字符代码名称来指定。它可以是一个array也可以是逗号分隔的枚举列表。 如果没有提供from_encoding,则会使用内部(internal)编码。
$str='编码';

// 转换内部编码为 SJIS
$str = mb_convert_encoding($str, "SJIS");
// 编码转换为utf-8
echo mb_convert_encoding($str, "UTF-8");

// 将 EUC-JP 转换成 UTF-8
$str = mb_convert_encoding($str, "UTF-8", "EUC-JP");
// 已知原编码为GBK,转换为utf-8
echo mb_convert_encoding($str, "UTF-8", "GBK");

// 从 JIS, eucjp-win, sjis-win 中自动检测编码,并转换 str 到 UCS-2LE
$str = mb_convert_encoding($str, "UCS-2LE", "JIS, eucjp-win, sjis-win");

// "auto" 扩展成 "ASCII,JIS,UTF-8,EUC-JP,SJIS"
$str = mb_convert_encoding($str, "EUC-JP", "auto");
// 未知原编码,通过auto自动检测后,转换编码为utf-8
echo mb_convert_encoding($str, "UTF-8", "auto"); 

注释

使用mb_convert_encoding函数需启用 PHPmbstring(multi-byte string)扩展。

转载声明:本站文章无特别说明,皆为原创,版权所有,转载请注明:Dy大叔的日常

转载自 字符编码转换函数 | XDY.ME@Dy大叔的日常

XDY.ME@Dy大叔的日常