表格提交时,德语Umlaute休息

时间:2013-12-11 12:13:49

标签: php post encoding utf-8 character-encoding

我有一个非常奇怪的现象,试图将旧的php项目从iso-8859-1迁移到utf-8

当在文本字段中输入像“äöüß”这样的德语变音符号时,提交它会收到像“äöüü”这样的破碎符号

标题设置为

<?php header("Content-Type:text/html;charset=UTF-8"); ?>
<meta charset="UTF-8" />

表单设置为

<form accept-charset="utf-8">

依此类推 - 我尝试了我能想到的一切 - 任何人都有同样问题的想法或经验?

最好的问候, 路波

2 个答案:

答案 0 :(得分:1)

我找到了适合我案例的解决方案:

我不得不将接受字符集从UTF-8改回ISO-8859-15然后字段值再次看起来没问题 - 能够处理接收的数据我必须对它们进行utf8_encode - 看起来有点奇怪但是它现在工作正常。

感谢大家的时间和Jukka的帮助。

最好的问候, 路波

答案 1 :(得分:0)

我很高兴你找到了解决方案。 如果你不想担心这么多不同的字符集编码,或者如果htmlentities对其他人不起作用,可以选择以下方法: 我使用mysqli DB连接(和PHPV5)表单发送/插入MySQl DB。

$Notes = $_POST['Notes']; //can be text input or textarea.


$Notes = str_replace('"', '&quot;', $Notes);  //double quotes for mailto: emails.  
$von = array("ä","ö","ü","ß","Ä","Ö","Ü"," ","é");  //to correct double whitepaces as well
$zu  = array("&auml;","&ouml;","&uuml;","&szlig;","&Auml;","&Ouml;","&Uuml;","&nbsp;","&#233;");  
$Notes = str_replace($von, $zu, $Notes);  
echo " Notes:".$Notes."<br>" ;  
$Notes = mysqli_real_escape_string($link, $Notes); //for recommended mysqli DB connection.
//$Notes = mysql_real_escape_string($Notes); //for old deprecated mysql DB connection.

// mysqli_real_escape_string Escapes special characters in a string for use in an SQL statement

echo " Notes:".$Notes ;  //ready for inserting  
//Optinal:

$ charset = mysqli_character_set_name($ link); //仅适用于mysqli数据库连接     printf(“检查你的字符集,但没有必要%s \ n”,$ charset);