簡體   English   中英

使用JQuery AJAX和PHP編碼

[英]Encoding with JQuery AJAX and PHP

我有一個html頁面編碼為:

<meta http-equiv="Content-Type"
content="text/html; charset=ISO-8859-2">

頁面的每個內容都使用此字符集,並且一切看起來都不錯。 我需要發送一個Ajax調用PHP服務器,但是當我發送一個字符á和發送相同的值改回它表明ĂĄ所以不知它改變-i認為-為UTF-8 ...那頂我需要保存這個值到Oracle數據庫,並在數據庫中它也保存為ĂĄ ...

PHP代碼(ajax.php):

<?php 
$p1=$_POST["p1"];
echo "p1:$p1\n";
?> 

此AJAX設置仍然無法使用:

 $.ajax({
    type:'POST',
    url:'ajax.php',
    contentType: "application/x-www-form-urlencoded;charset=ISO-8859-2",
    data:{p1:p1,
          p2:p2, 
          }})   
   .always(function() { alert('complete'); });  
}

因為如圖所示(下圖),ajax調用仍然以UTF-8字符編碼發送,所以我很感謝任何回答,請不要要求我將字符編碼更改為UTF-8,因為這是一個要求:

我的另一個問題是為什么contentType: "application/x-www-form-urlencoded;charset=ISO-8859-2",做任何處理contentType: "application/x-www-form-urlencoded;charset=ISO-8859-2", ...這簡直是在殺了我。

在此處輸入圖片說明

看來我可以使用:

utf8_encode()php函數: Encodes an ISO-8859-1 string to UTF-8

此函數將字符串數據編碼為UTF-8,並返回編碼后的版本。 UTF-8是Unicode使用的一種標准機制,用於將寬字符值編碼為字節流。 UTF-8對普通ASCII字符是透明的,可以自我同步(這意味着程序可以找出字節流字符中的何處開始),並且可以與常規的字符串比較功能一起使用以進行排序等。

唯一的問題是:我的編碼是ISO-8859-2,而不是ISO-8859-1,例如

ISO-8859-1中的法語字母è,與ISO-8859-2中的捷克/斯洛伐克字母č的位置相同

iso-8859和iso-8859-1之間的區別 (從另一個答案中得出)

完美的解決方案是這樣的:

iconv — Convert string to requested character encoding

字符串iconv(字符串$ in_charset,字符串$ out_charset,字符串$ str)

字符串strin_charsetout_charset進行字符集轉換

在這種情況下:

 $encoded_text= iconv("ISO-8859-2", "UTF-8",  $text)

我真的不知道為什么,但是,正確的格式是:

 $encoded_text= iconv("UTF-8","ISO-8859-2",   $text);

暫無
暫無

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

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