1. 質問:
データベースは MS SQLServer2000 です。SQLServer2000 のテーブルのデータは MySQL5 にインポートする必要があります (フィールドとして中国語を使用しないことを強くお勧めします)。名前)。実際、この操作は SQL Server 上のレコードをクエリし、それらを MySQL に挿入することです。選択されたスクリプト言語は PHP です。PHP は MSSQL と MySQL の拡張機能を提供し、両方のデータベースの操作を容易にします。
SQLServer のテーブルのフィールド名が中国語であるために問題が発生します。記述されたクエリ ステートメントは SQLServe でレコードを返すことによってテストされ、PHP の MSSQL 拡張クエリを使用するとエラーが報告されます。
インターネット上の情報を調べましたが、オンライン上には関連情報があまりありません。PHP の MSSQL 拡張機能は SQL ステートメント内の漢字をサポートしていないと考えています。情報を確認すると、PHP の MSSQL は SQL 内の中国語ステートメントをサポートしています。エラー報告の問題のほとんどは、エンコードの問題が原因で発生します。エンコード データベースとエンコードが、SQL Server のクエリ ステートメントの中国語部分が文字化けし、クエリが失敗します。
2. 解決策:
原因がわかったので、分析して解決し、一貫性のないコーディングの問題であることを確認します。解決策は次の手順に分かれています。
1. SQLServer データベースのエンコーディングが GBK であることを確認します。
2. 現在の PHP スクリプト ファイルのエンコードが UTF-8 であることを確認します。
3. SQL クエリ ステートメントのエンコーディングを変換します。
補足: 一部のネチズンは、データベースのエンコーディングと一致するように PHP スクリプト ファイルのエンコーディングを変換する必要があると述べています。その理由は、実際には、この手順は必要ありません。 PHP スクリプト ファイルに他の PHP スクリプトが含まれている場合は、すべての include または require スクリプト ファイルのエンコーディングも変換する必要があります。そうしないと、PHP スクリプトのエンコーディングが統一されず、エラーが発生しやすくなります。相互に関連するファイルが多数あると、これも非常に面倒で問題が複雑になります。
3 番目の計画:
SQL を操作する前に、SQL ステートメントのエンコーディングを変換する変換関数を作成します。私のサンプルコードは以下に掲載されています: