ホームページ >バックエンド開発 >PHPチュートリアル >iconv 関数および mb_convert_encoding 関数のトランスコーディングに関連する問題

iconv 関数および mb_convert_encoding 関数のトランスコーディングに関連する問題

WBOY
WBOYオリジナル
2016-06-13 12:51:20885ブラウズ

iconv 関数と mb_convert_encoding 関数間のトランスコーディングの問題
これら 2 つの関数には独自の特徴があります
1. iconv は高速で当然ながら好まれますが、変換できない文字に遭遇すると、そこから切り捨てられるという欠点があります。その結果、トランスコーディング中にコンテンツが理由もなく切り詰められます。
2. mb_convert_encoding 関数は比較的効率が悪いですが、変換できないコンテンツは切り詰められないため、コンテンツの整合性はほぼ維持されます。しかし、コンテンツにスペースが含まれている場合、変換されたコンテンツにもスペースが含まれることがわかりました。このシンボルはまだ完璧ではありません。

これら 2 つの関数を組み合わせて文字をトランスコードするにはどうすればよいですか?

私のアイデアは次のとおりです:
iconv 関数は効率的で組み込み関数であるため、必ず最初にこの関数を使用してください。 discuz のトランスコーディング機能もこの機能を優先して使用しますが、トランスコーディングが不完全な場合は、mb_convert_encoding を調整して、そのトランスコーディングが不完全であることをどのように判断するかが問題になります。


-----解決策--------------------------------
mb_convert_encoding 関数は php_mbstring 拡張機能をロードする必要がありますが、
しかし、一度読み込まれてしまえば、それは組み込み関数ではないとは言えません

認識できない文字の場合、iconv は切り捨てだけではない 2 つのスイッチから選択できます
//TRANSLIT
を類似の文字に置き換えます //破棄を無視して続行
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。