6

PHPには、次のコードがあります。

<?php
  echo "€&lt;br>";
  echo ord("€") . "<br>";
  echo chr(128) . "<br>";

そして、次の出力が得られます。

€
128
�

chr 関数が € 記号を提供できないのはなぜですか? どうすれば€を手に入れることができますか? 私は本当にこれが機能する必要があります。前もって感謝します。

4

1 に答える 1

5

chrordシングルバイト ASCII 文字でのみ動作します。より具体的ordには、そのパラメーターの最初のバイトのみを調べます。

ユーロ記号は UTF-8: の 3 バイト文字で0xE2 0x82 0xACあるため、ord("€")(UTF-8 記号を使用すると) 226 (0xE2) が返されます。

ISO-8859-1 (latin1) 文字セットにも存在する文字については、 と を使用できますutf8_encode()utf8_decode()、残念ながらそこには € 記号が含まれていないため、utf8_decode('€')「?」が返されます。また、元に戻すことはできません。

TL;DR: UTF-8 のようなマルチバイト エンコーディングではordandを使用できませんchr

于 2015-09-30T11:58:05.743 に答える