用户
 找回密码
 入住 CI 中国社区
搜索
查看: 2008|回复: 8
收起左侧

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

[复制链接]
发表于 2018-5-2 11:29:38 | 显示全部楼层 |阅读模式
本帖最后由 南方随歌起 于 2018-5-2 11:40 编辑

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

发表于 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发送中文没有问题。
发表于 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:
PHP复制代码
 
$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:
PHP复制代码
 
     $province  = $this->input->post('address_province');
      print_r($province);
 
复制代码


这样输出就是乱码了

database:
PHP复制代码
'char_set' => 'utf8',
        'dbcollat' => 'utf8_general_ci',
复制代码


发表于 2018-5-3 11:16:16 | 显示全部楼层

输出的时候必须带上 <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");
发表于 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,这个很重要,找出哪里的编码 ...

谢谢!!
哈哈我也没有环境调试代码,错误的是国外网络,这边无法重现错误,我也是一头雾水。
总之先这样吧,下次有条件调试,找出原因,再来结贴。

本版积分规则