1

これは、php マニュアルの String データ型http://php.net/manual/en/language.types.string.phpの下にあります。

PHP が文字列の特定のエンコーディングを指示していないことを考えると、文字列リテラルがどのようにエンコードされるのか疑問に思うかもしれません。たとえば、文字列 "á" は "\xE1" (ISO-8859-1)、"\xC3\xA1" (UTF-8、C 形式)、"\x61\xCC\x81" (UTF-8) に相当します。 、D フォーム) または他の可能な表現? 答えは、文字列はスクリプト ファイルでエンコードされている方法でエンコードされるということです。したがって、スクリプトが ISO-8859-1 で記述されている場合、文字列は ISO-8859-1 などでエンコードされます。ただし、Zend Multibyte が有効になっている場合は当てはまりません。その場合、スクリプトは任意のエンコーディング (明示的に宣言または検出される) で記述され、特定の内部エンコーディングに変換されます。これは、文字列リテラルに使用されるエンコーディングです。スクリプトのエンコーディング (または、Zend Multibyte が有効になっている場合は内部エンコーディング) にはいくつかの制約があることに注意してください。これは、ほとんどの場合、このエンコーディングが、UTF-8 や ISO-8859 などの互換性のある ASCII のスーパーセットでなければならないことを意味します。 -1. ただし、初期シフト状態と非初期シフト状態で同じバイト値を使用できる状態依存のエンコーディングには問題がある可能性があることに注意してください。

これが何を意味するのか、簡単に説明していただけますか?ありがとう

4

1 に答える 1

1

PHP が文字列の特定のエンコーディングを指示していないことを考えると、文字列リテラルがどのようにエンコードされるのか疑問に思うかもしれません。たとえば、文字列 "á" は "\xE1" (ISO-8859-1)、"\xC3\xA1" (UTF-8、Cform)、"\x61\xCC\x81" (UTF-8、 Dフォーム)または他の可能な表現?答えは、文字列はスクリプト ファイルでエンコードされている方法でエンコードされるということです。したがって、スクリプトが ISO-8859-1 で記述されている場合、文字列は ISO-8859-1 以降でエンコードされます。

ステートメントのこの部分は、Web ページが (UTF-8、C 形式) でエンコードされている場合、"á" は "\xC3\xA1" と同等になることを示しています。php.ini でエンコードを指定します。これは、php スクリプトの構成ファイルです。

ただし、Zend Multibyte が有効になっている場合は当てはまりません。その場合、スクリプトは任意のエンコーディング (明示的に宣言または検出される) で記述され、特定の内部エンコーディングに変換されます。これは、文字列リテラルに使用されるエンコーディングです。スクリプトのエンコーディング (または、Zend Multibyte が有効になっている場合は内部エンコーディング) にはいくつかの制約があることに注意してください。これは、ほとんどの場合、このエンコーディングが、UTF-8 や ISO-8859 などの互換性のある ASCII のスーパーセットである必要があることを意味します。 -1. ただし、初期シフト状態と非初期シフト状態で同じバイト値を使用できる状態依存のエンコーディングには問題がある可能性があることに注意してください。

ここでは、エンコーディングを指定する別のオプションがあるとだけ言っていますが、今はスクリプトで実行していますが、エンコーディングは ASCII スーパーセットと互換性がある必要があります

于 2012-12-05T07:07:03.090 に答える