4

まず、これに関するほとんどすべてのトピックを読みました。すべてのアドバイスを試しましたが、この問題を解決できませんでした。

これが事です。プロジェクトにクラシック ASP と MySQL を使用しています。すべてがうまくいきます。(例) Response.Write("ĞŞÜÇÖİ") と書くと、それは魅力のように機能します。しかし、その文字列がデータベースからのものである場合、「ĞŞÜÇÖİ」ではなく「ÄÅÜÇã–Ä°」と表示されます。これを phpMyAdmin で見ると問題ありません。

ドリームウィーバーCS6を使用しています。すべてのページを Unicode (UTF-8) で保存します。インクルード ファイルに Session.CodePage = 65001, Response.CodePage = 65001, Response.Charset = "utf-8" を記述し、すべてのページの先頭に配置しました。私はメタ文字セット utf-8 を書きました。ODBC 5.2 x64 ドライバーを使用しており、接続文字列に charset:UTF8; が含まれています。そして、すべての MySQL 設定 utf-8 (テーブル、フィールド、すべて)。

他のエンコーディング、文字セットは使いたくありません。私は何を間違っていますか?どうやら、それはデータベースについてです。何が問題ですか?

4

2 に答える 2

3

charset パラメータを使用して、接続文字列で文字セットを指定する必要があります。MySQL ODBC ドキュメントを参照してください。たとえば、 「charset=utf8;」を追加します。「charset=ucs2;」接続文字列に。

編集済み:これで簡単なテスト ハーネスを実行する機会がようやく得られましたが、実際には charset=utf8 で失敗します。ただし、VBScript は UCS2 で内部的に実行されているため、charset=ucs2 で試してみたところ、問題なく動作しました。注意: ページはまだすべての出力を UTF-8 として送信するように設定されています。VBScript が UCS2 を使用して ODBC 接続からデータを取得しているだけです。仕事は終わりました:)

于 2012-12-23T23:26:57.667 に答える
0

接続もUTF8である必要があります。他のクエリを実行する前に、このクエリを実行してください

set names 'utf8'

SET NAMES は、クライアントが SQL ステートメントをサーバーに送信するために使用する文字セットを示します。したがって、SET NAMES 'cp1251' はサーバーに、「このクライアントからの今後の着信メッセージは文字セット cp1251 である」ことを伝えます。また、結果をクライアントに返すためにサーバーが使用する文字セットも指定します。(たとえば、SELECT ステートメントを使用する場合に、列の値に使用する文字セットを示します。)

SET NAMES 'x' ステートメントは、次の 3 つのステートメントと同等です。

SET character_set_client = x;
SET character_set_results = x;
SET character_set_connection = x;

参考:マニュアル

于 2012-12-21T17:43:03.100 に答える