国外访问网页获取表单中文乱码
本帖最后由 南方随歌起 于 2018-5-2 11:40 编辑form表单获取select的option的中文值,插入数据库,在国内没有问题(包括远程到香港),但是在美国访问,插入数据库,则出现中文乱码。PS:美国访问的是客户插入的数据,自己并没有试过。所以不知道是网站的页面乱码,还是form在 post的时候,获取数据乱码。
乱码都是编码不一致导致的,看看你的网站是什么编码? Hex 发表于 2018-5-3 00:32
乱码都是编码不一致导致的,看看你的网站是什么编码?
这是一个产品有问题回访的邮件功能,网站使用urf-8编码,最起码发送邮件的页面是utf-8(包括view和controller)。
其次,国内没有问题,国外乱码(现在数据库的记录是美国那边的),如果是编码问题,能告诉为什么这样,能给点资料最好。
最后,整个表单只是select的option值获取乱码,其他的比如textare发送中文没有问题。 南方随歌起 发表于 2018-5-3 08:56
这是一个产品有问题回访的邮件功能,网站使用urf-8编码,最起码发送邮件的页面是utf-8(包括view和contro ...
这个得具体看你的网站的代码,或者数据库等的配置情况,从目前的信息只能判断出由于编码不一致导致的乱码,因为只有编码不一致才会导致乱码。需要提供更多信息才有可能帮到你。 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',
南方随歌起 发表于 2018-5-3 10:54
view:
输出的时候必须带上 <html><head><meta charset="utf-8"></head></html> 这样才会让浏览器正确识别编码,如果只是输出普通的文本,浏览器看起来就是乱码。 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 11:58
我认为 这些是基本的东西,所以没贴代码,实际是有写的。
我还在PHP开头加了header("Content-Type: text/ ...
那看起来都正常呀,这就得具体调试代码了,看看到底是哪里的编码不是 UTF-8,这个很重要,找出哪里的编码不是 UTF-8。
没有你的环境,确实不太好帮到你,很抱歉。。。。 Hex 发表于 2018-5-3 14:14
那看起来都正常呀,这就得具体调试代码了,看看到底是哪里的编码不是 UTF-8,这个很重要,找出哪里的编码 ...
谢谢!!
哈哈;P我也没有环境调试代码,错误的是国外网络,这边无法重现错误,我也是一头雾水。
总之先这样吧,下次有条件调试,找出原因,再来结贴。
页:
[1]