南方随歌起 发表于 2018-5-2 11:29:38

国外访问网页获取表单中文乱码

本帖最后由 南方随歌起 于 2018-5-2 11:40 编辑

form表单获取select的option的中文值,插入数据库,在国内没有问题(包括远程到香港),但是在美国访问,插入数据库,则出现中文乱码。PS:美国访问的是客户插入的数据,自己并没有试过。所以不知道是网站的页面乱码,还是form在 post的时候,获取数据乱码。

Hex 发表于 2018-5-3 00:32:59

乱码都是编码不一致导致的,看看你的网站是什么编码?

南方随歌起 发表于 2018-5-3 08:56:49

Hex 发表于 2018-5-3 00:32
乱码都是编码不一致导致的,看看你的网站是什么编码?

这是一个产品有问题回访的邮件功能,网站使用urf-8编码,最起码发送邮件的页面是utf-8(包括view和controller)。
其次,国内没有问题,国外乱码(现在数据库的记录是美国那边的),如果是编码问题,能告诉为什么这样,能给点资料最好。
最后,整个表单只是select的option值获取乱码,其他的比如textare发送中文没有问题。

Hex 发表于 2018-5-3 10:24:32

南方随歌起 发表于 2018-5-3 08:56
这是一个产品有问题回访的邮件功能,网站使用urf-8编码,最起码发送邮件的页面是utf-8(包括view和contro ...
这个得具体看你的网站的代码,或者数据库等的配置情况,从目前的信息只能判断出由于编码不一致导致的乱码,因为只有编码不一致才会导致乱码。需要提供更多信息才有可能帮到你。

南方随歌起 发表于 2018-5-3 10:54:22

Hex 发表于 2018-5-3 10:24
这个得具体看你的网站的代码,或者数据库等的配置情况,从目前的信息只能判断出由于编码不一致导致的乱码 ...

view:

$province_list = array('安徽', '北京', '福建', '广东', '甘肃', '广西', '贵州','海南', '河北', '河南', '黑龙江', '湖北', '湖南','吉林', '江苏', '江西', '江苏',
'江西', '辽宁', '内蒙古','宁夏', '青海', '山东', '山西', '陕西', '上海', '陕西','上海', '四川', '天津', '西藏', '新疆', '云南', '浙江', '重庆');

<select id="address_province" name="address_province">
<?php
        foreach ($province_list as $province) {
?>
      <option value="<?php echo $province; ?>" <?php if ($address_province == $province) { echo ' selected="selected"'; } ?>><?php echo $province; ?></option>
<?php
        }
?>
</select>




controller:

   $province        = $this->input->post('address_province');
      print_r($province);


这样输出就是乱码了

database:
'char_set' => 'utf8',
        'dbcollat' => 'utf8_general_ci',

Hex 发表于 2018-5-3 11:16:16

南方随歌起 发表于 2018-5-3 10:54
view:




输出的时候必须带上 <html><head><meta charset="utf-8"></head></html> 这样才会让浏览器正确识别编码,如果只是输出普通的文本,浏览器看起来就是乱码。

南方随歌起 发表于 2018-5-3 11:58:50

Hex 发表于 2018-5-3 11:16
输出的时候必须带上这样才会让浏览器正确识别编码,如果只是输出普通的文本,浏览器看起来就是乱码。 ...

我认为 <html><head><meta charset="utf-8"></head></html>这些是基本的东西,所以没贴代码,实际是有写的。
我还在PHP开头加了header("Content-Type: text/html;charset=utf-8");

Hex 发表于 2018-5-3 14:14:27

南方随歌起 发表于 2018-5-3 11:58
我认为 这些是基本的东西,所以没贴代码,实际是有写的。
我还在PHP开头加了header("Content-Type: text/ ...
那看起来都正常呀,这就得具体调试代码了,看看到底是哪里的编码不是 UTF-8,这个很重要,找出哪里的编码不是 UTF-8。

没有你的环境,确实不太好帮到你,很抱歉。。。。

南方随歌起 发表于 2018-5-3 15:13:30

Hex 发表于 2018-5-3 14:14
那看起来都正常呀,这就得具体调试代码了,看看到底是哪里的编码不是 UTF-8,这个很重要,找出哪里的编码 ...

谢谢!!
哈哈;P我也没有环境调试代码,错误的是国外网络,这边无法重现错误,我也是一头雾水。
总之先这样吧,下次有条件调试,找出原因,再来结贴。
页: [1]
查看完整版本: 国外访问网页获取表单中文乱码