ホームページ バックエンド開発 PHPチュートリアル sqlserver 2008_PHP チュートリアルに中国語を挿入すると文字化けする解決策を共有する

sqlserver 2008_PHP チュートリアルに中国語を挿入すると文字化けする解決策を共有する

Jul 21, 2016 pm 03:17 PM
php sqlserver 中国語 文字化け 使用 現れる 共有 方法 入れる 操作する データ 解決する

今日、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 に変換中にエラーが発生しました:
上記の文字化けをそのままコピーしてWebページに表示した結果です。 「クエリ文字列を UTF-16 に変換中にエラーが発生しました」から、文字エンコード変換の問題が原因であることがわかります。そこで、PHP の iconv 関数を使用して中国語のエンコード変換を強制し、SQL ステートメントを実行しました。 コードは次のとおりです。

コードをコピーします。 コードは次のとおりです。 $string = iconv(' utf-8', 'GB2312 //IGNORE', 'aaa Chinese content');
$sql = "opinion (content) 値 ($string) に挿入"
[code]
このとき、別のエラーが発生しました。が報告された場合、エラー メッセージは次のとおりです:
[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 ステートメントが間違って記述されているかどうかを確認すると、出力結果は次のようになります:


コードをコピーします
コードは次のとおりです: Opinion (コンテンツ) 値に挿入します。 (aaa��������)

一見問題ないようですが、実は問題があります 問題は、最後の括弧内のパラメータを囲む必要があることに気づきました(文字列であることを示す) 引用符で囲まれているので、SQL ステートメントを再度変更しました。コードは次のとおりです:


コードをコピー
コードは次のとおりです: $sql = "insert into意見 (コンテンツ) 値 ( '".$string."')"; 明確に見るために、拡大してみます


$string を一重引用符で囲み、後で SQL ステートメントを実行できるようにします 成功、データベースに保存されている漢字は文字化けしません。


http://www.bkjia.com/PHPjc/325615.html

www.bkjia.comtru​​ehttp://www.bkjia.com/PHPjc/325615.html技術記事今日、php を使用してデータベースを操作したところ、SQL Server 2008 データベースに挿入された中国語フィールドが文字化けしていることがわかりました。 以下に、私の初期状況をいくつか示します。 開発環境は php5.3.3+Apache2.2.17 です...
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットな記事タグ

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Ubuntu および Debian 用の PHP 8.4 インストールおよびアップグレード ガイド Dec 24, 2024 pm 04:42 PM

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

CakePHP の日付と時刻 CakePHP の日付と時刻 Sep 10, 2024 pm 05:27 PM

CakePHP の日付と時刻

CakePHP プロジェクトの構成 CakePHP プロジェクトの構成 Sep 10, 2024 pm 05:25 PM

CakePHP プロジェクトの構成

CakePHP ファイルのアップロード CakePHP ファイルのアップロード Sep 10, 2024 pm 05:27 PM

CakePHP ファイルのアップロード

CakePHP ルーティング CakePHP ルーティング Sep 10, 2024 pm 05:25 PM

CakePHP ルーティング

CakePHP について話し合う CakePHP について話し合う Sep 10, 2024 pm 05:28 PM

CakePHP について話し合う

CakePHP クイックガイド CakePHP クイックガイド Sep 10, 2024 pm 05:27 PM

CakePHP クイックガイド

PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 PHP 開発用に Visual Studio Code (VS Code) をセットアップする方法 Dec 20, 2024 am 11:31 AM

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

See all articles