# 準備
# テストコード
# 実行時エラー。文字化けして原因が不明
C:\Users\operator>php test.php
Could not connect.
Array
(
[0] => Array
(
[0] => 28000
[SQLSTATE] => 28000
[1] => 18456
[code] => 18456
[2] => [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]???? 'DS\operator' ??????????????
[message] => [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]???? 'DS\operator' ??????????????
)
# 文字コードを「SJIS」にしてファイル保存し直すも結果変わらず。SQLServerが返す文字コードを確認
PS C:\Users\operator> sqlcmd
1> select @@version;
2> go
------------------------------------------
Microsoft SQL Server 2019 (RTM) - 15.0.2000.5 (X64)
Sep 24 2019 13:48:23
Copyright (C) 2019 Microsoft Corporation
Developer Edition (64-bit) on Windows 10 Pro 10.0 <X64> (Build 19043: ) (Hypervisor)
(1 行処理されました)
1> SELECT COLLATIONPROPERTY('Japanese_CI_AS', 'CodePage')
2> go------------------------------------------
932
https://docs.microsoft.com/ja-jp/windows/win32/intl/code-page-identifiers
932 shift_jis ANSI/OEM 日本語;日本語 (Shift-JIS)
# php.ini編集
default_charset = “UTF-8″-> SJIS
mbstring.internal_encoding = UTF-8 -> SJIS
phpファイルもSJISで保存
C:\Users\operator>php test2.php
SQLSTATE: 42S22
code: 207
message: [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]列名 'InvalidColumnName' が無効です。
C:\Users\operator>
# おまけ
C:\Users\operator>php -r "phpinfo();" | findstr mbstring
Zend Multibyte Support => provided by mbstring
Multibyte decoding support using mbstring => enabled
mbstring
mbstring extension makes use of "streamable kanji code filter and converter", which is distributed under the GNU Lesser General Public License version 2.1.
mbstring.detect_order => no value => no value
mbstring.encoding_translation => Off => Off
mbstring.http_input => no value => no value
mbstring.http_output => no value => no value
mbstring.http_output_conv_mimetypes => ^(text/|application/xhtml\+xml) => ^(text/|application/xhtml\+xml)
mbstring.internal_encoding => UTF-8 => UTF-8
mbstring.language => Japanese => Japanese
mbstring.regex_retry_limit => 1000000 => 1000000
mbstring.regex_stack_limit => 100000 => 100000
mbstring.strict_detection => Off => Off
mbstring.substitute_character => no value => no value
C:\Users\operator>php -m | findstr mbstring
mbstring
C:\Users\operator>
C:\Users\operator>php -r "echo mb_internal_encoding();"
UTF-8
C:\Users\operator>