2011-11-10 2 views
0

私は何らかの形で私のデータベースに挿入された奇妙なスペース文字を持っています。私はこのユニコードキャラクターが何であるかを知りたいが、いくつかの問題が出ている。例:PHPで謎のキャラクターのord()値を取得

私は文字列に "普通の空間と思われる場所があります"という文字列を持っています。ord()の値を取得したいのですが、echo ord(' ');は正しくありません。私がを返すとが返ってきます。

私はこの文字のユニコード値を知る必要がありますので、私は一度、そして私のDB内のすべてのためにそれを取り除くためにMYSQLクエリを行うことができます。

答えて

2

php docsによると、ORD()は、文字のASCII値を返します。あなたのキャラクターがASCIIでないことを知っているなら、この機能はあなたが探しているものではありません。私はキャラクターをエコーし​​ようとします(接続のための文字セットとしてUTF-8を使用してください)、それをコピーしてhttp://unicodelookup.com/に貼り付けて、この文字が何であるかを見てください。

1

echo '0x' . bin2hex($mystery_character);を実行して、その結果をGoogleに返すことができます。

MySQLでそれのための0

検索:定期的な空間に、それを交換

SELECT col FROM table WHERE col LIKE CONCAT('%', CHAR(0xc2a0), '%')

UPDATE table SET col = REPLACE(col, CHAR(0xc2a0), ' ')

+0

0xc2a0は何らかの非破壊空間です。ですから、私の次の質問は、MySQLを使ってクエリを行う方法です。 –

+0

答えを更新しました。 – kriz

+1

@kriz - この種のものは「現実の世界」から来ています。単なる値で置き換えるだけでは答えはありません.Unicodeの標準で許される多くの異なるスペースがあります。 1つのデータでは、別のものがうかついていることがわかります。通常、utf16またはutf8で達成されたコードを使用してソフトウェアを動作させる方がよいでしょう。 –