2012-07-11 117 views
4

我想以正確的方式顯示這個德文字符,如果我不使用htmlentities()的輸出是unabh ngig,但是當我嘗試使用htmlentities()時,這個詞缺失,爲什麼?如何在Php中顯示德語變音符號(ü,ä,ö)?

<?php 
$str = htmlentities("unabhängig"); 
?> 
<!DOCTYPE html> 
<html lang="en"> 
<head> 
<title>Test</title> 
<meta charset='utf-8'> 
</head> 
<body> 
</body> 
<div><?php echo $str;?></div> 
+0

確保您的編碼不被apache或htaccess強制執行。我已經看到類似的情況,即使在meta中選擇utf-8,編碼也會有所不同。爲此你需要改變htaccess。您可以通過點擊瀏覽器上的編碼進行檢查,並查看您查看網站時選擇的內容。還有meta格式: 2012-07-11 11:55:40

+0

你沒有說它來自數據庫。使你的數據庫連接是UTF-8,你可以通過utf-8到htmlentities – 2012-07-11 11:58:14

回答

0

只需確保charset使用HTTP標頭設置爲utf-8,就可以發送ü而無需單獨進行編碼。

如果由於某種原因,你不能做到這一點,使用:

Ü = &Uuml; 

ü = &uuml; 
+0

也許我可以用這種方式對它進行硬編碼,但是這些詞來自數據庫。 – 2012-07-11 11:56:02

0

這是字符集的格式爲:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 

務必將編碼沒有被htaccess或apache強制。檢查瀏覽器時瀏覽器中選擇的編碼是什麼,如果它不是utf-8,那麼它被強制。如果逼你可以添加這htaccess的

AddDefaultCharset UTF-8 

確保數據庫表是UTF-8

請確保您連接到你的數據庫是UTF-8 http://php.net/manual/en/function.mysql-set-charset.php

mysql_query("SET character_set_results = 'utf8', character_set_client = 'utf8', character_set_connection = 'utf8', character_set_database = 'utf8', character_set_server = 'utf8'", $conn); 

你可以將UTF-8編碼傳遞給htmlentities以使其使用正確的編碼。或者您可以使用用htmlspecialchars http://php.net/manual/en/function.htmlentities.php

+0

字符集已經是正確的HTML5,你建議的是HTML4標準。由於他使用HTML5文檔類型,因此無需更改。 [來自W3C](http://www.w3.org/International/questions/qa-html-encoding-declarations#quicklookup) – 2012-07-11 12:17:36

+0

我明白了,謝謝你對我不瞭解的信息。儘管更多瀏覽器版本支持不應該受到影響 – 2012-07-11 12:25:50

0

如果你不想擔心SO 3 M任何不同的字符集編碼或如果htmlentities不適合你,這裏的替代: 我用mysqli數據庫連接(和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 
enter code here 
//Optional:  
$charset = mysqli_character_set_name($link); //only works for mysqli DB connection 
printf ("To check your character set but not necessary %s\n",$charset); 
+0

如果出現有趣的字符,請在頁眉中添加此行。 KarlosFontana 2014-01-03 21:44:39

相關問題