1

テーブルを持つMySql DBがあります

CREATE TABLE `pp` (
[...]
`Title` varchar(255) CHARACTER SET latin1 DEFAULT NULL,
[...]
) ENGINE=InnoDB DEFAULT CHARSET=cp1251 

テーブルは PHP によって入力されており、データを読み取って Web ページに書き込む作業中の PHP スクリプトがあります。PHP は「windows-1251」エンコーディングを使用し、正常に動作します。

サーバー側の変数は次のとおりです。

character_set_client:latin1
character_set_connection:latin1
character_set_database:utf8
character_set_filesystem:binary
character_set_results:latin1
character_set_server:latin1
character_set_system:utf8

私は、(とりわけ)そのデータを読み取り、Windows-1251でエンコードされたビューに表示するASP.NET MVC3アプリケーションに取り組んでいます。MySql .NET Connector v.6.5.4 を使用して DB に接続し、データを読み取ります。

問題は、結果の Web ページ (ビュー) のキリル文字が壊れていることです。

さまざまな接続文字列を試しました

charset=cp1251   or
charset=latin1   or
charset=utf8     

さらに、実行してみました

SET NAMES cp1251   or 
SET NAMES latin1   or 
SET NAMES utf8      

接続直後ですが、成功しませんでした。

繰り返しますが、PHP ではすべて正常に動作します。ASP.NET ではありません。

cp1251 と latin1 の両方が 1 文字あたり 8 ビットのエンコーディングであり、データ変換がないため、キリル文字を latin1 列に格納してはならず、PHP が正常に動作することはわかっています。しかし、ASP.NET を使用してそれを複製することはできません。

助けてください。

4

1 に答える 1

0

1 フィールド文字セットを 'cp1251' または 'utf8' に変更します。

ALTER TABLE `pp`
  CHANGE COLUMN `Title` `Title` VARCHAR(255) CHARACTER SET cp1251 COLLATE cp1251_general_ci DEFAULT NULL;

2 挿入または選択する前に、接続文字セットを設定します -

SET NAMES cp1251;

また

SET NAMES utf8;
于 2012-05-28T06:53:14.387 に答える