亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

自始至終擁抱 UTF-8
P粉925239921
P粉925239921 2023-10-15 12:36:31
0
2
1021

我正在設(shè)定一個(gè)新伺服器,並希望在我的 Web 應(yīng)用程式中完全支援 UTF-8。我過(guò)去曾在現(xiàn)有伺服器上嘗試過(guò)此操作,但似乎總是最終不得不退回到 ISO-8859-1。

我到底需要在哪裡設(shè)定編碼/字元集?我知道我需要配置 Apache、MySQL 和 PHP 來(lái)執(zhí)行此操作 - 是否有一些我可以遵循的標(biāo)準(zhǔn)檢查表,或者也許可以對(duì)發(fā)生不匹配的位置進(jìn)行故障排除?

這適用於執(zhí)行 MySQL 5、PHP、5 和 Apache 2 的新 Linux 伺服器。

P粉925239921
P粉925239921

全部回覆(2)
P粉482108310

我想在 chazomaticus 的出色答案中添加一件事一個(gè)>:

也不要忘記 META 標(biāo)籤(像這樣,或 它的 HTML4 或 XHTML 版本):

這看起來(lái)微不足道,但 IE7 之前曾經(jīng)給我?guī)?lái)過(guò)問(wèn)題。

我所做的一切都是正確的;資料庫(kù)、資料庫(kù)連接和Content-Type HTTP標(biāo)頭都設(shè)定為UTF-8,在所有其他瀏覽器中都運(yùn)作良好,但I(xiàn)nternet Explorer仍然堅(jiān)持使用「西歐」編碼。

原來(lái)該頁(yè)面缺少 META 標(biāo)記。添加即可解決問(wèn)題。

編輯:

W3C 其實(shí)有一個(gè)相當(dāng)大的專門討論 I18N 的部分。他們有許多與此問(wèn)題相關(guān)的文章 - 描述了 HTTP、(X)HTML 和 CSS 方面的內(nèi)容:

他們建議同時(shí)使用 HTTP 標(biāo)頭和 HTML 元標(biāo)記(或在 XHTML 充當(dāng) XML 的情況下使用 XML 宣告)。

P粉457445858

資料儲(chǔ)存

  • 為資料庫(kù)中的所有表格和文字列指定 utf8mb4 字元集。這使得 MySQL 物理儲(chǔ)存和檢索以 UTF-8 原生編碼的值。請(qǐng)注意,如果指定了 utf8mb4_* 排序規(guī)則(沒(méi)有任何明確字元集),MySQL 將隱含使用 utf8mb4 編碼。

  • 在舊版的 MySQL (utf8,它只支援 Unicode 字元的子集。我希望我是在開(kāi)玩笑。

資料存取

  • 在您的應(yīng)用程式程式碼(例如 PHP)中,無(wú)論您使用哪種資料庫(kù)存取方法,您都需要將連接字元集設(shè)定為 utf8mb4。這樣,當(dāng) MySQL 將資料傳遞給您的應(yīng)用程式時(shí),它不會(huì)從其本機(jī) UTF-8 進(jìn)行轉(zhuǎn)換,反之亦然。

  • 某些驅(qū)動(dòng)程式提供自己的機(jī)制來(lái)配置連接字元集,該機(jī)制既更新其自身的內(nèi)部狀態(tài),又通知 MySQL 連接上要使用的編碼 - 這通常是首選方法。在 PHP 中:

    • 如果您使用PDO 抽象層對(duì)於PHP ≥ 5.3.6,您可以在DSN

      $dbh = new PDO('mysql:charset=utf8mb4');
    • 如果您使用mysqli,您可以呼叫 set_charset()

      $mysqli->set_charset('utf8mb4');       // object oriented style
        mysqli_set_charset($link, 'utf8mb4');  // procedural style
    • 如果你堅(jiān)持使用普通的 mysql 但碰巧運(yùn)行 PHP ≥ 5.2.3,你可以呼叫 mysql_set_charset代碼>.

  • 如果驅(qū)動(dòng)程式?jīng)]有提供自己的機(jī)制來(lái)設(shè)定連接字元集,您可能必須發(fā)出查詢來(lái)告訴MySQL 您的應(yīng)用程式期望連接上的資料如何編碼:設(shè)定名稱'utf8mb4 '。

  • 對(duì)於 utf8mb4/utf8 的考慮同樣適用,如上所述。

輸出

  • HTTP頭中應(yīng)設(shè)定UTF-8,如Content-Type:text/html;字元集=utf-8。您可以透過(guò)設(shè)定 default_charset code> 在 php.ini 中(首選),或手動(dòng)使用 header() 函數(shù)。
  • 如果您的應(yīng)用程式將文字傳輸?shù)狡渌到y(tǒng),它們還需要了解字元編碼。對(duì)於 Web 應(yīng)用程序,必須告知瀏覽器發(fā)送資料的編碼(透過(guò) HTTP 回應(yīng)標(biāo)頭或 HTML 元資料)。
  • 使用 json_encode() 對(duì)輸出進(jìn)行編碼時(shí),新增 JSON_UNESCAPED_UNICODE 作為第二個(gè)參數(shù)。

輸入

  • 瀏覽器將以為文件指定的字元集提交數(shù)據(jù),因此無(wú)需對(duì)輸入執(zhí)行任何特殊操作。
  • 如果您對(duì)請(qǐng)求編碼有疑問(wèn)(以防它可能被篡改),您可以在嘗試儲(chǔ)存或在任何地方使用它之前驗(yàn)證每個(gè)收到的字串是否為有效的 UTF-8。 PHP 的 mb_check_encoding() 執(zhí)行以下操作:技巧,但你必須虔誠(chéng)地使用它。確實(shí)沒(méi)有辦法解決這個(gè)問(wèn)題,因?yàn)閻阂饪蛻舳丝梢砸运麄兿胍娜魏尉幋a提交數(shù)據(jù),而且我還沒(méi)有找到讓 PHP 可靠地為您執(zhí)行此操作的技巧。

其他程式碼注意事項(xiàng)

  • 顯然,您將提供的所有檔案(PHP、HTML、JavaScript 等)都應(yīng)使用有效的 UTF-8 進(jìn)行編碼。

  • 您需要確保每次處理 UTF-8 字串時(shí)都是安全的。不幸的是,這是最困難的部分。您可能想要廣泛使用 PHP 的 mbstring 副檔名。

  • 預(yù)設(shè)情況下,PHP 的內(nèi)建字串操作是 UTF-8 安全的。 您可以使用正常的 PHP 字串操作安全地執(zhí)行一些操作(例如連接),但對(duì)於大多數(shù)情況,您應(yīng)該使用等效的 mbstring 函數(shù)。

  • 要知道您在做什麼(閱讀:不要搞砸),您確實(shí)需要了解 UTF-8 以及它如何在盡可能最低的級(jí)別上工作。查看 utf8.com 中的任何鏈接,獲取一些很好的資源,以了解您需要了解的所有內(nèi)容。 p>

最新下載
更多>
網(wǎng)站特效
網(wǎng)站源碼
網(wǎng)站素材
前端模板