【发布时间】:2018-01-29 15:54:52
【问题描述】:
我正在尝试从 C# 向 PHP 脚本发送数据。 PHP页面会将发布的数据插入数据库,但编码需要是UTF-8。
这是来自 C# 的代码:
WebClient client = new WebClient();
client.Encoding = Encoding.UTF8;
NameValueCollection data = new NameValueCollection();
string rq = "data here";
rq = Convert.ToBase64String(Encoding.UTF8.GetBytes(rq));
data["q"] = rq;
byte[] buffer=client.UploadValues("url of php file", "POST", data);
PHP 文件中的代码:
$data = $_POST["q"];
insert_to_database($data);
如果数据包含é 或à 等字符,它们将被插入为Ä© Ä ....。
【问题讨论】:
-
似乎错误出在 PHP 端,或者实际上是在设置数据库连接的方式上。 PHP 不擅长了解编码类型。您拥有的数据已经是 UTF8,但经过处理(通过 PHP 并与数据库进行对话)和 ANSI/Latin。
-
我想你会在this question找到你问题的答案
-
如果我去 phpmyadmin 并直接使用 é à 之类的字符插入数据,它们将正确显示
-
我会检查问题谢谢(y)
-
朱普。数据库可能是正确的,但 与它的连接 不正确。如果 PHP 告诉一个 UTF-8 MySQL 数据库:“这是一些 ANSI 数据”,那么 MySQL 会很高兴地转换其内容并将每个字节视为一个单独的字符。通过这样做,它将对这些多字节 UTF-8 字符进行双重编码,使它们显示为两个(或更多)单独的字符。
标签: c# php post encoding utf-8