2013-03-10 171 views
0

我擁有utf-8編碼的所有東西。所有非ascii字符都可以正常工作,但是當我使用php的chr()函數時會出現問題。chr()UTF-8編碼問題

線路工作正常(與±字符)

echo '<a class="page_contents_right_cat" href="/page-contents/">Top ±300</a>'; 

但它不,並顯示無法識別的字符。

echo '<a class="page_contents_right_cat" href="/page-contents/">Top '. chr(241) .'300</a>'; 

如何解決這個問題?任何幫助?

回答

1

使用等效的HTML實體,即&#177;&plusmn;

+0

我可以通過鍵入ALT + 241那麼什麼是177±寫? – 2013-03-10 08:45:35

+0

它的HTML實體代碼,並且是順序的。請參閱W3C的[此列表](http://www.w3.org/TR/REC-html40/sgml/entities.html)。 – 2013-03-10 09:39:00

+0

好的。再回到問題。當我回應字節順序標記時,它工作正常。 echo chr(239).chr(187).chr(191);但是當我回應chr(241)時;它打破了。 – 2013-03-10 10:11:35

2

從手冊頁CHR:

Returns a one-character string containing the character specified by ascii. 

而且從comments on that page

<?php 
/** 
* Return unicode char by its code 
* 
* @param int $u 
* @return char 
*/ 
function unichr($u) { 
    return mb_convert_encoding('&#' . intval($u) . ';', 'UTF-8', 'HTML-ENTITIES'); 
} 
?> 

你真的應該看看手冊問問題之前的任何地方。

+0

它不工作。 Plz看到我對其他答案的評論。 – 2013-03-10 08:56:22

+0

它可能不工作,因爲這是擴展ascii,看看[這裏](http://www.php.net/manual/en/function.chr.php#55978) – fredrik 2013-03-10 12:14:08

0

您需要使用UTF-8字符代碼,而不是241

爲±使用碼177: http://unicode-table.com/ru/#00B1

並將其轉換爲字節。

摘要如下所示:

mb_convert_encoding(chr(177),'UTF-8') 
+0

PHP chr()仍然爲任何東西超過255(即大部分的Unicode)。 – TextGeek 2017-08-30 15:47:10