PHPでASCIIをUTF-8エンコーディングに変換する方法
現在の文字エンコーディングがASCIIであることが分かっている場合、iconv関数を使用することで、文字列をUTF-8に変換できます。iconv関数には、「入力エンコーディング」「出力エンコーディング」「変換対象となる元の文字列」の3つを引数として渡します。
方法1:iconv関数で変換する
サンプルコード
<?php
$str = "ábrêcWtë";
echo '元の文字列:', $str, PHP_EOL;
echo '変換後の文字列:', iconv("ISO-8859-1", "UTF-8", $str), PHP_EOL;
?>
特殊文字を含む文字列を変数「$str」に代入し、iconv関数に渡しています。第1引数には現在のエンコーディング(ここではISO-8859-1)、第2引数には変換先のエンコーディング(UTF-8)を指定します。これにより、文字列がUTF-8へと変換されます。
実行結果
元の文字列:ábrêcWtë
変換後の文字列:ábrêcWtë
UTF-8対応の環境で表示すると、変換前後の文字列はどちらも同じように表示されます。これは、文字列が正しくUTF-8として処理されていることを示しています。なお、引数で指定するエンコーディングの向きを誤ると、表現できない文字が「?」などに置き換えられてしまうため注意が必要です。
方法2:mb_convert_encoding関数で検出しながら変換する
もうひとつの方法は、mb_detect_encoding関数で現在のエンコーディングを検出した上で、mb_convert_encoding関数を使って適切なエンコーディングへ変換するやり方です。こちらはマルチバイト文字列の処理に強いmbstring拡張モジュールを利用するため、日本語などを含む文字列にも安心して使えます。
サンプルコード
$string = "ábrêcWtë"; print(mb_detect_encoding($string)); $string = mb_convert_encoding($string, "UTF-8"); print(mb_detect_encoding($string));
特殊文字を含む文字列を変数「$string」に代入します。mb_convert_encoding関数に文字列と変換先のエンコーディング(UTF-8)を渡すことで、文字列がUTF-8に変換されます。変換の前後でmb_detect_encoding関数を呼び出すことで、実際にエンコーディングが変化したことを確認できます。
実行結果
UTF-8UTF-8
まとめ
- iconv関数:元のエンコーディングが分かっている場合に、シンプルに変換できる。
- mb_convert_encoding関数:mb_detect_encoding関数と組み合わせれば、エンコーディングが不明な文字列でも安全にUTF-8へ変換できる。
用途に応じてこれらの関数を使い分けることで、PHPにおける文字エンコーディングの問題を効果的に解決できます。
-
PHPのord()関数とは?文字列からASCII値を取得する方法を解説
PHPのord()関数は、文字列の先頭文字に対応するASCII値(文字コード)を整数で返す組み込み関数です。文字と数値コードの相互変換が必要な場面でよく利用されます。構文ord(string $string): intパラメータstr($string) − ASCII値を取得したい対象の文字列を指定します。文字列全体が渡された場合でも、評価されるのは最初の1バイト目のみです。戻り値ord()関数は、引数として渡された文字列の先頭文字に対応するASCII値を、0〜255の範囲の整数として返します。空の文字列を渡した場合は0が返されます。使用例次の例では、文字列「welcome」の先頭文字である「
-
PHPのchr()関数とは?ASCII値を文字に変換する方法をわかりやすく解説
PHPの chr() 関数は、指定されたASCII値(文字コード)を対応する1文字に変換して返す関数です。数値のコードから実際の文字を取得したい場合に使用します。 基本構文 chr(ascii) パラメータ ascii − 文字に変換したいASCII値(0〜255の整数)を指定します。10進数のほか、16進数や8進数で指定することも可能です。 戻り値 渡されたASCII値に対応する1文字を文字列として返します。 逆に、文字からASCII値を取得したい場合は ord() 関数を使用します。chr() と ord() は互いに補完関係にある関数です。 使用例 まずは、ASCII