1

私は自分を探してきました!!! UTF8を同等の数に変換するPHP関数を見つけようとしないでください。番号の呼び方が完全にはわかりませんが(縦座標と呼ばれていると聞きましたか?)、例を示します:http: //jrgraphix.net/r/Unicode/3040-309F

基本的に、私はPHPでUTF-8 .txtファイルを読み取ってから、すべての行を配列に保存しようとしているので、それをいじることができます。

私はまだUTF8に精通していないので、誰かがこれを手伝ってくれるなら、それは非常にありがたいです。

編集:これは私がこれまでに得たものです:

echo "var TextCharacters = new Array();\n";

$LineArray = array();
$file_handle = fopen("lesson1.txt", "r");


while (!feof($file_handle)) 
{
  $line_of_text = fgets($file_handle);  
  array_push($LineArray, $line_of_text);
}

fclose($file_handle);

foreach($LineArray as $s)
{
    for($i = 0; $i < mb_strlen($s,"utf-8"); $i++)
    {
        $char = mb_substr($s, $i, 1, "utf-8");
        echo "alert(go(" . bin2hex(iconv('UTF-8', 'UCS-2', $char)) . "));";         
    }
}
4

2 に答える 2

4

探しているのは、Unicodeコードポイント、つまり、Unicode文字テーブルで文字が認識されるための数値識別子です。これを行う「最も安価な」方法は、UCS-2文字エンコードを使用することです。これは、バイトからUnicodeコードポイントに1:1でマップします。

echo bin2hex(iconv('UTF-8', 'UCS-2', 'あ'));
// 3042

警告:返されるコードは常に4桁の16進数の長さであり(好きな場合も嫌いな場合もあります)、UCS-2はBMPより高い文字(コ​​ードポイントFFFFより高い文字)をサポートしていません。

于 2012-07-18T12:54:08.440 に答える
-1

PHPのUTF-8には何の魔法もありません。ファイルを読み取ると、バイト値が取得されます(文字として解析されません)。読み取ったデータを繰り返し、ord()を使用してバイトの10進値を取得します。

UTF-8コードポイントでこれを実行する場合は、mb_substrまたはiconv_substrのいずれかを使用して各文字を抽出してから、ord()を使用して文字を構成する各バイトの値を出力できます。

更新:完全なソリューションで拡張するには:

utf8.test:fooÆØÅござ

$utf8 = file_get_contents("utf8.test");

for ($i = 0; $i < mb_strlen($utf8, "utf-8"); $i++)
{
    $char = mb_substr($utf8, $i, 1, "utf-8");

    print($char);
    print("\n");

    for ($j = 0; $j < strlen($char); $j++)
    {
        print(dechex(ord($char[$j])));
    }

    print("\n\n");
}

出力:

f
66

o
6f

o
6f

Æ
c386

Ø
c398

Å
c385

ご
e38194

ざ
e38196

お役に立てば幸いです。

于 2012-07-18T12:04:19.427 に答える