我搜索了一段時間,還沒有找到適合我的東西。我正在使用PHP表單使用SAP DI API將數據提交到SAP。我需要弄清楚哪個字符集實際上允許我存儲和使用越南文字符。正確的字符集在PHP中使用越南字符(這不是Unicode)
UTF8似乎適用於很多角色,但是ô變成了'。更重要的是,有字符限制,UTF-8打破字符限制。如果我有30個字符的字符串,它告訴API它超過了50個。在MySQL中存儲也是如此 - 如果存在varchar字符限制,UTF-8會導致字符串超過它。
不幸的是,當我搜索時,UTF-8似乎是人們對越南人物的唯一建議。如果我根本不編碼字符,它們會被存儲爲它們的html字符代碼。我也試過ISO-8859-1,轉換成UCS-2或UCS-4 ......我真的很茫然。如果任何人有與越南人物合作的經驗,你的幫助將不勝感激。
UPDATE
它出現的問題可能與我在Windows wampserver。這裏的代碼位是困惑我:
$str = 'VậTCôNG';
$str1 = utf8_encode($str);
if (mb_detect_encoding($str,"UTF-8",true) == true) {
print_r('yes');
if ($str1 == $str) {
print_r('yes2');
}
}
echo $str . $str1;
這版畫「是」,而不是「YES2」,和$ str.str1 =「VậTCôNGVáºTCÃ'NG」在瀏覽器中。
我有我的php.ini文件:
default_charset = "utf-8"
,並與我的httpd.conf文件:
AddDefaultCharset UTF-8
和我的PHP文件我跑有:
header("Content-type: text/html; charset=utf-8");
所以我現在想知道:如果原始字符串是utf-8,爲什麼它不等於它自己的utf8編碼?爲什麼utf8編碼返回錯誤的字符? wampserver配置有問題嗎?
UTF-8是你想要走到最後的路,沒有什麼嚴肅的選擇。而UTF-8字符集肯定包含越南文字符,他們得到「改變」的事實必須是您的設置的一些本地問題。但是,您必須瞭解UTF-8編碼的實際工作原理才能理解字符串長度的變化。 – arkascha
@arkascha感謝您的回覆。我對UTF-8的問題是,如果我對SAP DI API有50個字符的硬字符限制,並且字符串是32並且有多個越南字符,它將超出限制而不進入。這看起來像是一個破壞者,即使我確實修復了字符集問題。 – Wan
@arkascha忘記了這個迴應。我想你是正確的。我更新了我的帖子,你有什麼見解,爲什麼會發生這種情況?或者我的設置可能會出現什麼地方問題? – Wan