ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Windows

ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° Π΄Π»ΠΈΠ½Π½Ρ‹Ρ… ΠΈ UTF-8 ΠΏΡƒΡ‚Π΅ΠΉ

Если Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ с UTF-8, Ρ‚ΠΎ Π½ΠΈΠΊΠ°ΠΊΠΈΡ… Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… дСйствий Π½Π΅ трСбуСтся. Для ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡŽΡ‰ΠΈΡ… Π²Π²ΠΎΠ΄/Π²Ρ‹Π²ΠΎΠ΄ ΠΏΠΎ путям, Π·Π°Π΄Π°Π½Π½Ρ‹Ρ… Π² ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ΅ ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎΠΉ ΠΎΡ‚ UTF-8, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ явно Π·Π°Π΄Π°Ρ‚ΡŒ значСния Π² INI-Ρ„Π°ΠΉΠ»Π΅. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΎΠΊ осущСствляСтся Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ порядкС:

  • internal_encoding
  • default_charset
  • zend.multibyte

Π‘Ρ‹Π»ΠΎ Π²Π²Π΅Π΄Π΅Π½ΠΎ нСсколько Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΊΠΎΠ΄ΠΎΠ²Ρ‹Ρ… страниц:

  • sapi_windows_cp_set() для установки ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠΈ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ
  • sapi_windows_cp_get() для получСния Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠΈ
  • sapi_windows_cp_is_utf8()
  • sapi_windows_cp_conv() для ΠΊΠΎΠ½Π²Π΅Ρ€Ρ‚Π°Ρ†ΠΈΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ°ΠΌΠΈ с использованиСм сигнатур Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ΠΌ iconv()

Π­Ρ‚ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ потокобСзопасны.

Кодовая страница, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠ°Ρ для Π²Ρ‹Π²ΠΎΠ΄Π° Π² консоли настраиваСтся Π² зависимости ΠΎΡ‚ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠΈ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠΉ Π² PHP. Π’ зависимости ΠΎΡ‚ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ систСмной OEM-ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠΈ, Π²ΠΈΠ΄ΠΈΠΌΡ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹ΠΌ ΠΈΠ»ΠΈ Π½Π΅Ρ‚. НапримСр, Π² стандартной консоли cmd.exe Π² систСмах с ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠΎΠΉ 437 OEM-Π²Ρ‹Π²ΠΎΠ΄ Π² ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ°Ρ… 1251, 1252, 1253 ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒΡΡ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ ΠΏΡ€ΠΈ использовании UTF-8. Π’ Ρ‚Π΅Ρ… ΠΆΠ΅ самых систСмах символы Π² ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ΅ Ρ‚ΠΈΠΏΠ° 20932 Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΠΎΠΊΠ°Π·Π°Π½Ρ‹ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ. Π­Ρ‚ΠΎ относится ΠΊ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΌ систСмным ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌ для ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠΉ страницы, совмСстимости ΡˆΡ€ΠΈΡ„Ρ‚ΠΎΠ² ΠΈ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠΉ консоли. PHP автоматичСски устанавливаСт ΠΊΠΎΠ΄ΠΎΠ²ΡƒΡŽ страницу консоли Π² соотвСтствии с ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌΠΈ кодирования ΠΈΠ· php.ini. Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… случаях использованиС консоли ΠΎΡ‚Π»ΠΈΡ‡Π½ΠΎΠΉ ΠΎΡ‚ стандартной cmd.exe ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ ΡΠΈΡ‚ΡƒΠ°Ρ†ΠΈΡŽ.

НС Π·Π°Π±Ρ‹Π²Π°ΠΉΡ‚Π΅, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠΉ страницы Π²ΠΎ врСмя исполнСния послС запуска скрипта ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ Π½Π΅ΠΎΠΆΠΈΠ΄Π°Π½Π½Ρ‹ΠΌ ΠΏΠΎΠ±ΠΎΡ‡Π½Ρ‹ΠΌ эффСктам Π² CLI. Π›ΡƒΡ‡ΡˆΠΈΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ - ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ php.ini. ΠŸΡ€ΠΈ использовании PHP CLI Π² эмуляторС консоли, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Unicode, это ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π²ΠΎ ΠΈΠ·Π±Π΅ΠΆΠ°Π½ΠΈΠ΅ измСнСния ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠΈ консоли. Π›ΡƒΡ‡ΡˆΠΈΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ - ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΡƒ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ ΠΈΠ»ΠΈ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΡŽΡŽ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΡƒ ΠΊΠ°ΠΊ ANSI. Π’Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Ρ‹ output_encoding ΠΈ input_encoding Π² Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡ‹Π΅ значСния, Π½ΠΎ слСдуСт ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ ΠΎΡ‚Π»ΠΈΡ‡ΠΈΠΈ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅ΠΉ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠΈ ΠΈ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠΈ Π²Π²ΠΎΠ΄Ρ‹/Π²Ρ‹Π²ΠΎΠ΄Π° Π²Ρ‹, скорСС всСго, ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚Π΅ кракозябры. Π’ Ρ€Π΅Π΄ΠΊΠΈΡ… случаях ΠΏΡ€ΠΈ ΠΏΠ°Π΄Π΅Π½ΠΈΠΈ PHP, ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ° консоли ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ Π²ΠΎΡΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Ρ‚ΡŒΡΡ Π² ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅. Π’ Ρ‚Π°ΠΊΠΎΠΌ случаС восстановитС Π΅Ρ‘ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ chcp.

ОсобоС Π·Π°ΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅ для систСм DBCS - ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠΈ Π²ΠΎ врСмя исполнСния с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ini_set() ΠΌΠΎΠΆΠ΅Ρ‚ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ. Π Π°Π·Π½ΠΈΡ†Π° с систСмами Π±Π΅Π· DBCS Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹Π΅ символы Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ Π΄Π²ΡƒΡ… ячССк консоли для отобраТСния. Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… случаях ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΠΈΠ·ΠΎΠΉΡ‚ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ символов Π² Π³Π»ΠΈΡ„Ρ‹ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ ΡˆΡ€ΠΈΡ„Ρ‚Π°, Π±Π΅Π· Π΅Π³ΠΎ смСны. Π­Ρ‚ΠΎ Π² Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€Π΅ систСм DBCS. Π‘Π°ΠΌΡ‹ΠΉ простой способ ΠΈΠ·Π±Π΅ΠΆΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ с ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ΠΌ - ΠΎΡ‚ΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ ΠΎΡ‚ использования ini_set() для измСнСния ΠΊΠΎΠ΄ΠΎΠ²ΠΎΠΉ страницы.

Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ UTF-8 Π² ΠΏΠΎΡ‚ΠΎΠΊΠ°Ρ…, скрипты PHP большС Π½Π΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Ρ‹ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΠ°ΠΌΠΈ ASCII ΠΈ ANSI для ΠΈΠΌΡ‘Π½ Ρ„Π°ΠΉΠ»ΠΎΠ². Вакая ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° доступна ΠΈΠ· ΠΊΠΎΡ€ΠΎΠ±ΠΊΠΈ CLI. Для Π΄Ρ€ΡƒΠ³ΠΈΡ… SAPI слСдуСт ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ΡŒ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ.

Π”Π»ΠΈΠ½Π½Ρ‹Π΅ ΠΏΡƒΡ‚ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½ΠΎ. ΠŸΡƒΡ‚ΠΈ Π΄Π»ΠΈΠ½Π½Π΅Π΅ 260 Π±Π°ΠΉΡ‚ автоматичСски Π΄ΠΎΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ прСфиксом \\?\. Максимальная Π΄Π»ΠΈΠ½Π° ΠΏΡƒΡ‚ΠΈ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½Π° 2048 Π±Π°ΠΉΡ‚Π°ΠΌΠΈ. Π˜ΠΌΠ΅ΠΉΡ‚Π΅ Π² Π²ΠΈΠ΄Ρƒ, Ρ‡Ρ‚ΠΎ ограничСния Π½Π° Π΄Π»ΠΈΠ½Ρƒ сСгмСнта ΠΏΡƒΡ‚ΠΈ (Π΄Π»ΠΈΠ½Ρƒ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΈΠΌΠ΅Π½ΠΈ) ΠΏΠΎ-ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ ΡΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‚ΡΡ.

Для Π»ΡƒΡ‡ΡˆΠ΅ΠΉ пСрСносимости Π½Π°ΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ рСкомСндуСтся ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ ΠΈΠΌΠ΅Π½Π° Ρ„Π°ΠΉΠ»ΠΎΠ², Π²Π²ΠΎΠ΄/Π²Ρ‹Π²ΠΎΠ΄ ΠΈ ΠΏΡ€ΠΎΡ‡ΠΈΠ΅, связанныС с UTF-8 сущности. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, для ΠΊΠΎΠ½ΡΠΎΠ»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ рСкомСндуСтся ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡˆΡ€ΠΈΡ„Ρ‚Ρ‹ TrueType ΠΈ Π½Π΅ рСкомСндуСтся ΠΌΠ΅Π½ΡΡ‚ΡŒ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΡƒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ini_set().

readline

ΠœΠΎΠ΄ΡƒΠ»ΡŒ readline поддСрТиваСтся Ρ‡Π΅Ρ€Π΅Π· Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ » WinEditLine. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ интСрфСйс ΠΎΠ±ΠΎΠ»ΠΎΡ‡ΠΊΠΈ CLI Ρ‚Π°ΠΊΠΆΠ΅ поддСрТиваСтся (php.exe -a).

PHP_FCGI_CHILDREN

Π’Π΅ΠΏΠ΅Ρ€ΡŒ принимаСтся Π²ΠΎ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ PHP_FCGI_CHILDREN. Если Π·Π°Π΄Π°Π½Π° эта пСрСмСнная окруТСния, Ρ‚ΠΎ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ процСсс php-cgi.exe ΠΏΠΎΡ€ΠΎΠ΄ΠΈΡ‚ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ количСство ΠΏΠΎΡ‚ΠΎΠΌΠΊΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ Ρ€Π°Π·Π΄Π΅Π»ΡΡ‚ΡŒ Ρ‚Π΅ ΠΆΠ΅ TCP-сокСты.

ftok()

Π”ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° для ftok()

οΌ‹Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΡ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ

ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ Π΅Ρ‰Ρ‘ Π½Π΅ добавляли примСчания для страницы