簡體   English   中英

在php中處理多字節字符

[英]Handling Multibyte characters in php

我正在基於php的mime解析器上工作。 如果主體包含像Iñtërnâtiônàlizætiøn字符串,我們會看到它正在轉換為Iñtërnâtiônà lizætiøn 有人可以建議如何處理此類字符串(什么函數)嗎?

所以我們正在做以下

  1. 使用Zend Library連接到IMAP服務器

     mail = new Zend_Mail_Storage_Imap($params); 
  2. 使用閱讀消息

     $message = $mail->getMessage($i); 

    在循環。

  3. 當我們打印$message我們看到例如Iñtërnâtiônàlizætiøn的字符串Iñtërnâtiônàlizætiøn打印為Iñtërnâtiônà lizætiøn

我需要的是是否可以通過某種方式保留原始字符串? 這只是一個例子,我們可能會遇到其他多字節字符,那么該如何通用地了解呢?

它沒有特定的功能 ,您只需要按其所使用的編碼來對待字符串即可。字符串只是一個字節的字節,通過這些字節解釋為文本的方式,它都會變成字符。 並且某些東西需要為此使用正確的編碼,否則這些字節不會被解釋為它們應該是的字符。 有關常見陷阱的詳細信息,請參見在Web App中處理Unicode從頭到尾。

如評論中所述,您可以使用php mb_ *函數處理多字節字符。 這只是檢測字符串編碼的示例:

$s="Iñtërnâtiônàlizætiøn";
echo mb_detect_encoding($s);  //UTF-8

那么您可以使用utf8_decode($ s)或任何mb_函數將其轉換為所需的編碼。

暫無
暫無

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

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