1. 質問:
データベースは MS SQLServer2000 です。SQLServer2000 のテーブルのデータを MySQL5 にインポートする必要があります。SQLServer2000 テーブルのフィールド名は簡体字中国語です。中国語で実行しないことを強くお勧めします)。実際、この操作は 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 スクリプト ファイルのエンコーディングを変換する必要があると述べています。実際には、この手順は必要ありません。SQL ステートメントがエンコーディングと一致していることを確認してください。その理由は、PHP スクリプト ファイルに他の PHP スクリプトが含まれている場合は、すべてのインクルード スクリプト ファイルまたは require スクリプト ファイルのエンコーディングも変換する必要があるためです。相互に関連するファイルが多数ある場合、これも非常に面倒で、問題が複雑になります。
3 番目の計画:
SQL を操作する前に SQL ステートメントのエンコーディングを変換する変換関数を作成します。私のサンプルコードは以下に掲載されています:
コードをコピー コードは次のとおりです:
//エンコード変換関数
function utf8togb ($s) {
return iconv('utf-8', 'gbk//IGNORE', $s); // 変換できない文字が見つかった場合、IGNORE パラメータは無視されます
}
// 以下の操作やコーディング変換、その他の問題を容易にするために、すべての中国語フィールドを英語のエイリアスに置き換えることをお勧めします
$sql="SELECT [id], [column] as typeid, [title] as title, [ author] を著者として、convert (text, [text]) を本文として FROM [記事テーブル];";
$sql = utf8togb($sql);