douhuo0884 2015-12-28 15:22
浏览 98
已采纳

php $ _GET无法正常使用ISO-8859-1字符

I got a database that contains accented letters (like "é" etc) in several fields. If I echo those on my pages they are displayed correctly, because I use this html-tag when I render my html:

<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />

But when I want to display a value from a parameter from my URL with $_GET it doesn't work.

I use this code:

$fname = $_GET['fname'];

Actual output:

groté

Desired output:

Groté

The encoding looks OK to me, I checked it using this code:

var_dump($fname);
var_dump(iconv_get_encoding('all'));

Output:

string(6) "groté" 
array(3) { ["input_encoding"]=> string(10) "ISO-8859-1" ["output_encoding"]=> string(10) "ISO-8859-1" ["internal_encoding"]=> string(10) "ISO-8859-1" }

I don't use code where I set the encoding in php. I only use the meta tag, like noted above.

What's wrong with my code?

  • 写回答

1条回答 默认 最新

  • dqcd84732 2015-12-28 16:17
    关注

    OK, after further investigation I found a solution!

    $fnameraw = $_GET['fname'];
    $fname = utf8_decode($fnameraw);
    

    Now I got the correct output: groté ! While using charset=ISO-8859-1 in my meta tag. Both the database-output as the output from the URL display correctly.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法
  • ¥15 matlab代码代写,需写出详细代码,代价私
  • ¥15 ROS系统搭建请教(跨境电商用途)