ホームページ >バックエンド開発 >PHPチュートリアル >PHP 5.2.4 iconv 関数 TRANSLIT が信頼できない場合がある

PHP 5.2.4 iconv 関数 TRANSLIT が信頼できない場合がある

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBオリジナル
2016-06-13 12:49:45974ブラウズ

php 5.2.4 iconv 関数 TRANSLIT は信頼できない場合があります

php バージョン 5.2.4

問題: ファイル文字列のトランスコーディング中のバイト単位の不適切な切り捨て

たとえば

$str = “公司”;                                  //默认以UTF-8编码
$str = Simple_Util_String::msubstr($str, 4);	// 按字节截取前4个字节,原字符串有6个字节
$str .= “adfadsfasdfadsfasdf”; 			//拼接后面的字符串  (执行下一步后,这些字符就消失了)
$str = iconv("UTF-8", "GBK//TRANSLIT",$str);    // 转码 , 遇到不认识的字符串进行转写

このステップを実行すると、「Company」の単語「SI」のエンコードが不完全で、iconv はそれを認識しませんでしたが、iconv はそれを音訳せずに切り捨てました。その結果、$str 以降の文字列が正常に変換されず、「adfadsfasdfadsfasdf」が失われていました。一部の商用製品、特に統計システムでは、これは非常に危険です。

解決策は次のとおりです:

iconv の 2 番目のパラメータを変更します。

$str = iconv("UTF-8","GBK//IGNORE", $str);

要約: iconv の TRANSLIT は信頼できません。認識できない文字列に遭遇すると切り捨てられる可能性があります。保険の方法は IGNORE を使用することです。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。