ホームページ >バックエンド開発 >PHPチュートリアル >PHP文字列エンコード変換プログラム_PHPチュートリアル

PHP文字列エンコード変換プログラム_PHPチュートリアル

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBオリジナル
2016-07-13 10:56:43952ブラウズ

UFT-8 文字を gbk または gb2312 エンコーディングに変換する必要があることがよくありますが、変換プロセス中にいくつかの問題が発生することがよくあります。文字エンコーディングの変換を実現するための PHP 独自の文字列変換関数の使用方法を紹介します。

iconv 関数のバグ。 iconv は文字「-」を gb2312 に変換するときにエラーになります
解決策は非常に簡単です。変換する必要があるエンコーディングの後に「//IGNORE」を追加するだけです。これはiconv関数の2番目のパラメータです。
以下の通り:
以下、引用内容です

コードは次のとおりです コードをコピー
iconv(“UTF-8″,”GB2312//IGNORE”,$data)

ignore は、変換中にエラーを無視することを意味します。ignore パラメーターがないと、この文字に続くすべての文字列を保存できません。

iconv() 関数は php5 に組み込まれています。

リエジ

コードは次のとおりです コードをコピー

echo $str= 'こんにちは、ここではコーヒーを販売しています!';
エコー '
';

echo iconv('GB2312', 'UTF-8', $str); //文字列エンコーディングを GB2312 から UTF-8 に変換します
エコー '
';

echo iconv_substr($str, 1, 1, 'UTF-8'); //バイト数ではなく文字数で切り捨てる
print_r(iconv_get_encoding()); // 現在のページのエンコード情報を取得します

echo iconv_strlen($str, 'UTF-8') //設定されたエンコーディングの文字列長を取得します

//これも使われています

$content = iconv("UTF-8","gbk//TRANSLIT",$content);
?>

ただし、iconv 関数を使用すると、次のような通知が表示されることがあります: iconv() [function.iconv]: 入力文字列に不正な文字が検出されました... エラー、

その理由は、gb2312 は gbk や uft8 よりも小さいため、変換する際には注意が必要です。ただし、この問題をより適切に解決できる関数 mb_detect_encoding も提供しています。

今度はそれをより専門的な関数に記述します

コードは次のとおりです コードをコピー

関数 phpcharset($data, $to) {
if(is_array($data)) {
foreach($data as $key => $val) {
$data[$key] = phpcharset($val, $to);
}
} その他 {
$encode_array = array('ASCII', 'UTF-8', 'GBK', 'GB2312', 'BIG5');
$encoded = mb_detect_encoding($data, $encode_array);
$to = strtoupper($to);
if($encoded != $to) {
$data = mb_convert_encoding($data, $to, $encoded);
}
}
$data を返します;
}
?>

文字のエンコーディングがわからない場合があるため、最初にエンコーディングを検出してから変換する必要があります。

コードは次のとおりです コードをコピー


関数asciitog($brand)
{
$cha=mb_detect_encoding($brand);
if($cha=='utf-8')
{
$brand2 = iconv($cha,"gb2312",$brand);
}
$cha2=mb_detect_encoding($brand2);
if($cha2!='ascii'){
$brand=$brand2;
}

$brand を返します;
}

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/632143.html技術記事 UFT-8 文字を gbk または gb2312 エンコードに変換する必要があることがよくありますが、変換プロセス中にいくつかの問題が発生することがよくあります...
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。