2

Windows-1252文字エンコーディングに関するウィキペディアの記事を読みました。バイト値が 128 未満の文字の場合、ASCII/UTF-8 と同じにする必要があります。

意味あり:

php -r "var_export(mb_detect_encoding(\"\x92\", 'windows-1252', true));" 'Windows-1252'

左巻きのアポストロフィは正しく検出されます。

php -r "var_export(mb_detect_encoding(\"a\", 'windows-1252', true));" false

は?文字「a」は Windows-1252 ではありませんか?

これを実行している端末は UTF-8 に設定されています。したがって、文字「a」の ASCII と同じバイト シーケンスである必要があります。変数を最小限に抑えるために、正しい Windows-1252 を指定すると、バイト シーケンス:

php -r "var_export(mb_detect_encoding(\"\x61\", 'windows-1252', true));" false

これらの場合、「strict」パラメーター (かなり役に立たないドキュメントがあります) を変更しても何も起こりません。

4

1 に答える 1

4

のエンコード検出はサポートされていませんwindows-1252mb_detect_orderドキュメントによると:

mbstring は現在、次のエンコード検出フィルターを実装しています。以下のエンコーディングに無効なバイト シーケンスがある場合、エンコーディングの検出は失敗します。

UTF-8、UTF-7、ASCII、EUC-JP、SJIS、eucJP-win、SJIS-win、JIS、ISO-2022-JP

ISO-8859- の場合、mbstring は常に ISO-8859- として検出します。

UTF-16、UTF-32、UCS2、および UCS4 の場合、エンコードの検出は常に失敗します。

于 2014-03-02T10:31:41.637 に答える