簡體   English   中英

字符串奇怪的字符編碼問題

[英]strange character encoding issues with strings

看似簡單的操作完全被此處的編碼所破壞。 我只想檢查字符串的第一個字符是否為£。 我的PHP文件本身已編碼為UTF8-沒有BOM。 謝謝!

<?php
print "<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.1//EN' "; 
print "'http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd'>\n";
print "<html xmlns='http://www.w3.org/1999/xhtml' xml:lang='eng' lang='en'>\n";
print "<head>\n";
print "<meta http-equiv='Content-Type' content='text/html; charset=utf-8' />\n";
print "<title>WAMP</title>\n";
print "<meta name='Description' content='Website Under Construction' />\n";
print "</head>\n";
print "<body>\n";
print "<p>\n";

$temp = "£Hello";
$charArray = preg_split('//', $temp, -1);
// preg_match_all('/./', $temp, $charArray);

print_r ($charArray);
print "<br />First Char: $temp[0]";

print "</p>\n";
print "</body>\n";
print "</html>";
?>

輸出:

Array ( [0] => [1] => � [2] => � [3] => H [4] => e [5] => l [6] => l [7] => o [8] => )
First Char: �

期望的輸出:

Array ( [0] => [1] £ [2] => H [3] => e [4] => l [5] => l [6] => o [7] => ) 
First Char: £

假設您要發送帶有適當內容類型標題的HTML,我猜您正在通過Apache網絡服務器運行它。 如果沒有那么請忽略我,但服務器配置中的其他地方可能有一個設置來執行此操作...

我之前已經遇到過這個問題,並且絕對所有內容都必須處於UTF8模式才能正常工作。

特別是在這里,我懷疑您需要在包含以下內容的腳本所在的目錄中創建一個.htaccess文件:

AddDefaultCharset UTF-8

重啟Apache顯然。

另請注意,如果您打算使用MySQL數據庫,則還需要確保連接是UTF8編碼,方法是在連接后運行以下SQL命令:

SET NAMES utf8

而不是$temp[0] ,它不是多字節感知的,請嘗試mb_substr()

if( mb_substr($temp, 0, 1, 'UTF-8') == '£' )
{
  ...
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM