sqlserver 2008_PHP チュートリアルに中国語を挿入すると文字化けする解決策を共有する
Jul 21, 2016 pm 03:17 PM
今日、PHP を使用してデータベースを操作したところ、SQL Server 2008 データベースに挿入された中国語フィールドが文字化けしていることに気付きました。以下に私の初期状況をいくつか示します。
開発環境は php5.3.3+Apache2.2.17+SQL です。 Server 2008、PHPスクリプトファイルのエンコーディングはutf-8、データベースに渡されるエンコーディングはGB2312です(SQL Serverのデフォルトの文字エンコーディングはこれである可能性がありますが、私は公式に提供しているSQLSRVライブラリを使用しています)。 Microsoft はデータベースに接続します (追記: SQL Server 2005 以降、mssql.dll を使用した接続はサポートされなくなりました)。そのため、sqlsrv_query($conn, "set names GB2312") ステートメントを使用して、渡されるエンコード形式を設定します。 SQL ステートメントは次のように記述されます: insert into Opinion (content) names ('aaa Chinese content');
この SQL ステートメントを実行し、sqlsrv_errors() 関数を使用して実行が失敗したことを確認します。エラー メッセージが表示され、次の結果が得られます:
Array ( [0] => Array ( [0] => IMSSP [SQLSTATE] => IMSSP) [1] => -46 [コード] => -46 [2] => クエリ文字列を UTF-16 に変換中にエラーが発生しました:
このとき、別のエラーが発生しました。が報告された場合、エラー メッセージは次のとおりです:
[code]
Array ( [0] => Array ( [0] => 42S22 [SQLSTATE] => 42S22 [1] => 207 [code] = > 207 [2] => [Microsoft][SQL Server Native Client 10.0][SQL Server]���� 'aaa��������' ��Ч�� [メッセージ] Microsoft][SQL Server Native Client 10.0][SQL Server]�� �� 'aaa��������' ��Ч�� ) )
このエラーメッセージについては手がかりがないので出力しましたSQL ステートメントを Web ページに送信して、SQL ステートメントが間違って記述されているかどうかを確認すると、出力結果は次のようになります:
コードをコピーします
一見問題ないようですが、実は問題があります 問題は、最後の括弧内のパラメータを囲む必要があることに気づきました(文字列であることを示す) 引用符で囲まれているので、SQL ステートメントを再度変更しました。コードは次のとおりです:
コードをコピー
$string を一重引用符で囲み、後で SQL ステートメントを実行できるようにします 成功、データベースに保存されている漢字は文字化けしません。
http://www.bkjia.com/PHPjc/325615.html

人気の記事

人気の記事

ホットな記事タグ

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド

PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法
