【问题标题】:post parameter encoding from C# to PHP [duplicate]将参数编码从 C# 发布到 PHP [重复]
【发布时间】: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


【解决方案1】:

我找到了解决方案here

连接需要在 php 文件中进行编码

 $conn = mysql_connect($server, $username, $password);
 mysql_set_charset("UTF8", $conn);

【讨论】:

  • 好!作为旁注:mysql_connect 它的家人很老。如果您有机会,请迁移到 MySQLi 或 PDO 以使您的项目更具前瞻性。见PHP/MySQL: Choosing an API
  • 我会检查的。非常感谢@GolezTrol
猜你喜欢
  • 2017-06-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多