1

我有一个带表的 MySql DB

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

该表已由 PHP 填充,并且有一个有效的 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

我正在开发一个 ASP.NET MVC3 应用程序,该应用程序(除其他外)读取该数据并在 windows-1251 编码视图中显示它们。我使用 MySql .NET Connector v.6.5.4 连接到数据库并读取数据。

问题是:生成的网页(即视图)上的西里尔数据已损坏。

我尝试了各种连接字符串

charset=cp1251   or
charset=latin1   or
charset=utf8     

此外,我尝试执行

SET NAMES cp1251   or 
SET NAMES latin1   or 
SET NAMES utf8      

连接后立即,但没有任何成功。

再次:在 PHP 中一切正常;在 ASP.NET 中没有。

我知道西里尔文本不应该存储在 latin1 列中,并且 PHP 可以正常工作,因为 cp1251 和 latin1 都是每字符 8 位编码并且没有数据转换。但我无法使用 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 回答