2

文字エンコーディングをもう少し理解しようとしているだけなので、いくつかのテストを行っています。

UTF-8 として保存され、次のような PHP ファイルがあります。

<?php
declare(encoding='UTF-8');

header( 'Content-type: text/html; charset=utf-8' );
?><!DOCTYPE html>

<html>

<head>
    <meta charset="UTF-8" />
    <title>Test</title>
</head>

<body>
    <?php echo "\xBD"; # Does not work ?>
    <?php echo htmlentities( "\xBD" ) ; # Works ?>
</body>

</html>

ページ自体はこれを示しています:

ここに画像の説明を入力

問題の要点は、私の Web アプリケーションに文字エンコーディングの問題が多数あることです。人々が Outlook や Word からコピー アンド ペーストすると、文字がひし形の疑問符に変換されます (実際の名前はありますか?)。

$_GETページの読み込み時にすべての入力が UTF-8 に変換され (基本的に、、、$_POSTおよび$_REQUEST)、適切な UTF-8 処理メソッドを使用してすべての出力が行われるようにする方法を学習しようとしています。


私の質問は、私のページに最初のエコーで疑問符が表示されるのはなぜですか? PHP で UTF-8 安全な Web アプリを作成する方法について、他の情報を持っている人はいますか?

4

2 に答える 2

4

0xBDは有効なUTF-8ではありません。UTF-8で「½」をエンコードする場合は、代わりに0xC20xBDを使用する必要があります。

>>> print '\xc2\xbd'.decode('utf-8')
½

別の文字セット(この場合はLatin-1)のテキストを使用する場合は、最初にさまざまなiconvまたはmb関数を使用してUTF-8にトランスコードする必要があります。

また:

$ charinfo �
U+FFFD REPLACEMENT CHARACTER
于 2012-07-19T02:40:55.853 に答える
2

\xBDutf8としては無効です\xC2\xBD。疑問符は、アプリケーションが無効なコードポイントをどのように置き換えるかということです。したがって、utf8テキストに、utf8でないか、破損していることがわかります。

于 2012-07-19T02:41:09.927 に答える