我有一个带表的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复制它。
请帮忙。
答案 0 :(得分: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;