タグ付けされた質問 「iconv」

26
PHP文字列の文字からアクセントを削除するにはどうすればよいですか?
URLで文字列を使用できるようにするための最初のステップとして、PHP文字列の文字からアクセントを削除しようとしています。 次のコードを使用しています。 $input = "Fóø Bår"; setlocale(LC_ALL, "en_US.utf8"); $output = iconv("utf-8", "ascii//TRANSLIT", $input); print($output); 私が期待する出力は次のようなものになります: F'oo Bar ただし、アクセント付き文字が音訳されるのではなく、疑問符に置き換えられます。 F?? B?r 私がオンラインで見つけることができるすべては、ロケールを設定することでこの問題が解決されることを示していますが、私はすでにこれを行っています。私はすでに次の詳細を確認しました: 私が設定しているロケールはサーバーによってサポートされています(によって生成されたリストに含まれていますlocale -a) ソースとターゲットのエンコーディング(UTF-8およびASCII)は(によって生成されるリストに含まれてのiconvのサーバのバージョンでサポートされていますiconv -l) 入力文字列はUTF-8でエンコードされています(mercatormb_check_encodingの回答で示唆されているように、PHPの関数を使用して検証されます) への呼び出しsetlocaleは成功しました(では'en_US.utf8'なく戻りますFALSE) 問題の原因: サーバーがiconvの間違った実装を使用しています。必要なlibiconvバージョンの代わりにglibcバージョンがあります。 一部のシステムでは、iconv関数が期待どおりに機能しない場合があることに注意してください。そのような場合は、GNU libiconvライブラリをインストールすることをお勧めします。ほとんどの場合、より一貫した結果が得られます。 – iconvへのPHPマニュアルの紹介 PHPで使用されるiconv実装の詳細は、phpinfo関数の出力に含まれています。 (このプロジェクトで使用しているサーバーで正しいiconvライブラリを使用してPHPを再コンパイルできないため、以下で受け入れた答えは、iconvをサポートせずにアクセントを削除するのに最も有効なものです。)
91 php  iconv 
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.