Несистемные параметры языкового стандарта

Скачать драйвер PHP

Этот раздел относится только к пользователям Linux и macOS, в частности к тем, кто работает с несколькими языковыми стандартами в приложениях PHP.

По умолчанию драйверы Майкрософт для PHP для SQL Server принимают LC_ALL переменную среды, определенную в системе, и переопределяет все остальные LC_xxx категории (возможно, кроме $LANG$LANGUAGE или в некоторых случаях), затрагивая разделитель тысяч, десятичный знак, набор символов, месяц, имена дней, сообщения приложения, такие как сообщения об ошибках, символ валюты и т. д.

Начиная с версии 5.8.0, пользователи могут настраивать параметры локализации с помощью файла php.ini, как показано в примерах ниже.

Настройка сведений о языковом стандарте с помощью драйвера SQLSRV

Добавьте следующий код в конец файла php.ini:

[sqlsrv]  
sqlsrv.SetLocaleInfo = <option>

Настройка сведений о языковом стандарте с помощью драйвера PDO_SQLSRV

Добавьте следующий код в конец файла php.ini:

[pdo_sqlsrv]  
pdo_sqlsrv.set_locale_info = <option>

Параметр может принимать одно из следующих значений:

Вариант Описание поведения
0 Драйвер не учитывает параметры языкового стандарта системы.
1 Драйвер считывает переменную LC_CTYPE.
2 Драйвер считывает переменную LC_ALL (это значение по умолчанию).

Категория LC_CTYPE определяет правила обработки символов, которые управляют интерпретацией последовательностей байтов символов текстовых данных, классификацией символов и поведением классов символов. Эта категория управляет распознаванием верхнего и нижнего регистра, алфавитных и неалфавитных символов и т. д.

Описание

  1. Параметр 0. Используйте его, если не нужно изменять языковой стандарт приложения.

  2. Параметр 1. Используйте его, чтобы установить только системное значение LC_CTYPE без влияния на другие категории LC_xxx.

  3. Параметр 2. Используйте LC_ALL для переопределения всех категорий LC_xxx, что влияет на приложение PHP и его расширения.

Если языковой стандарт для скрипта PHP отличается от стандарта системы, может потребоваться указать языковой стандарт в скрипте PHP, вызвав встроенную функцию PHP setlocale.

Например, если система по умолчанию имеет значение en_US.UTF-8, но скрипт PHP использует de_DE.UTF-8, тогда вызовите соответствующую функцию PHP setlocale().

В параметре 2 укажите требуемый языковой стандарт в скриптах PHP, только если он отличается от переменной LC_ALL.

Примечание.

Если в файле php.ini ничего не определено, текущим значением по умолчанию будет переопределение всех остальных параметров языкового стандарта на основе переменной LC_ALL, что будет нерекомендуемым. В ближайшем будущем значение по умолчанию будет игнорировать параметры языкового стандарта системы. Таким образом, пользователям потребуется соответствующим образом изменить файл php.ini, если нужно оставить текущее поведение.

Если включены оба драйвера, sqlsrv и pdo_sqlsrv, не рекомендуется задавать для них разные параметры.