C# Asp.net使用错误的编码呈现字符串,但PHP没有';t(MySQL)

C# Asp.net使用错误的编码呈现字符串,但PHP没有';t(MySQL),c#,php,asp.net,mysql,encoding,C#,Php,Asp.net,Mysql,Encoding,我接管了一些旧的php应用程序,使用MySQL作为数据库。在数据库中,有一些表包含具有本地化字符串的内容(因此包含特殊字符) 目前有一个PHP应用程序正在访问该数据库。我的工作是创建一个ASP.net(C#codebehind)应用程序,该应用程序也可以访问这些字符串。就编码而言,这是可行的 如果我试图访问这些字符串,我确实会遇到一种编码问题,如“ndern”和“Prüfzeichen”,但仅在ASP.net应用程序中。PHP应用程序将utf-8设置为字符集,字符串被完美呈现。在ASP.net

我接管了一些旧的php应用程序,使用MySQL作为数据库。在数据库中,有一些表包含具有本地化字符串的内容(因此包含特殊字符)

目前有一个PHP应用程序正在访问该数据库。我的工作是创建一个ASP.net(C#codebehind)应用程序,该应用程序也可以访问这些字符串。就编码而言,这是可行的

如果我试图访问这些字符串,我确实会遇到一种编码问题,如“ndern”和“Prüfzeichen”,但仅在ASP.net应用程序中。PHP应用程序将utf-8设置为字符集,字符串被完美呈现。在ASP.net应用程序中,无论页面编码如何,它都是乱七八糟的

在MySQL数据库中,指定表“translations”的字符集设置为“latin--cp1252 West European”,排序规则设置为“latin_swedish_ci”

我似乎不知道PHP显然做了什么,而ASP.net却没有。我跟踪了php代码,在从数据库获取字符串时,找不到任何特殊编码的迹象

问题是,在不修改数据库的情况下,如何确保ASP.net应用程序中的编码正确,因为php代码不可能有大的更改

有人有线索吗

我似乎无法理解PHP的功能


PHP应用程序将utf-8设置为字符集。用于数据库连接。使用
设置名称
查询。其中
是您的页面编码

最好的长期解决方案是将表格转换为使用UTF-8编码:

ALTER TABLE translations CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
如果数据已经是utf-8格式(即使字符集是latin1),则需要将每列转换为正确的编码

这会将定义为latin1但包含utf8的列转换为声明为并包含utf8的列:

ALTER TABLE translations CHANGE columnNameHere columnNameHere BLOB;
ALTER TABLE translations CHANGE columnNameHere columnNameHere TEXT CHARACTER SET utf8;

如果最终设法找到转换成UTF8的方法

System.Text.Encoding.UTF8.GetString(System.Text.Encoding.Default.GetBytes("convert me"))

PHP将允许字符串中的任何字符集,它们不会被破坏或重新编码,除非您通过非二进制安全字符串函数运行它们。这就是为什么当你看不到任何特殊的编码指令时它能工作的原因。