【问题标题】:Read cyrillic from MySql (ASP.NET)从 MySql (ASP.NET) 读取西里尔字母
【发布时间】:2012-05-28 03:36:30
【问题描述】:

我有一个带表的 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 复制它。

请帮忙。

【问题讨论】:

  • 为什么要设置这个:Titlevarchar(255) CHARACTER SET latin1 DEFAULT NULL, ?可能是你需要设置 CHARACTER SET cp1251
  • 数据库已经在生产中,所以我无法更改它。我的 ASP.NET 代码应该只从该数据库中读取。还有很多其他工作的 PHP 代码可以插入/删除/修改数据库数据。

标签: php asp.net mysql


【解决方案1】:

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;

【讨论】:

  • 3.确保您确实将 cp1251 或 utf8 编码数据发送到数据库!
  • 我无法更改数据库,因为这需要更改处理数据库数据的现有 PHP 代码。我的(ASP.NEt MVC3)应用程序应该是只读的。请注意,现有的 PHP 页面会显示数据,并且西里尔文显示得很好。
  • 可能数据以cp1251或utf8字段,或二进制格式存储,并正确显示。但是你将如何在 VARCHAR 'latin1' 字段中存储西里尔字母?你应该修改表格。
  • 现有的 PHP 文件集合处理该数据库 - 并且读取/写入/显示西里尔字母工作正常。我的理解是它可以正常工作,因为 cp1251 和 Latin1 都是 8 位的,而 MySql 不执行任何转换。因此,无论 PHP 写入什么 - 它都会将其读回并原封不动地刷新到网页。这样西里尔文就不会改变。我想对 ASP.NET 做同样的事情,但是,即使我在连接字符串中设置“charset=latin1”并在读取任何数据之前执行“SET NAMES Latin1”:一旦我阅读文本,它就会以某种方式改变,而且不是西里尔字母更多。
猜你喜欢
  • 1970-01-01
  • 2017-10-27
  • 1970-01-01
  • 1970-01-01
  • 2018-06-02
  • 2021-06-10
  • 1970-01-01
  • 1970-01-01
  • 2019-06-13
相关资源
最近更新 更多