之前的一片文章介绍了C#怎么通过Apache+PHP搭建的WebServer向另一台上服务器上的MySQL中插入数据。
实际的操作中出现了一些问题,如果C#发送的数据中有中文,数据就根本没有被插入到数据库中;但是将需要插入的同样的数据直接写在PHP的代码中就可以插入到数据库。
比如我的C#的RequestURL是:
http://hhueccz.imwork.net:30242/insert.php?num=’10001’&name=’张三’&sex=’男’&age=‘23’
PHP通过‘GET’的方式获取’num’,’name’,‘sex’,’age’:
$num = $_GET[‘num’];
$name = $_GET[‘name’];
$sex = $_GET[‘sex’];
$age = $_GET[‘age’];
执行:
$sqlText = “insert into student values (‘$num’, ‘$name’, ‘$sex’, ‘$age’)”;
mysql_query($sqlText);
这两条语句,但是数据库中并没有新增一条记录。
这是因为C#中默认的汉字编码是“UTF-8”,而MySql的默认编码已经被另一个做APP的人改成了“gbk”格式的,所以要想让C#发送过来的数据插入到数据库中,有两种方式,
*1.在C#中将中文的编码改成“gbk”的;
2.在PHP中将C#发送过来的数据中的中文编码改成“gbk”的。*
然而我在C#中奖中文的编码改成“gbk”的并没有什么用,在加上有两个不同的语言的不同的客户端都要调用PHP这边的接口,所以就直接在PHP中改变字符的编码:
$name = iconv(“utf-8”, “gbk”, $name);
$sex = iconv(“uft-8”, “gbk”, $sex);
这时候,C#发送的数据就能够成功插入到数据库中了。