0

我有一个 html 页面编码为:

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

页面的每个内容都使用这个字符集,一切看起来都很好。我需要向 PHP 服务器发送一个 Ajax 调用,但是当我发送一个字符á并返回相同的值时,它会显示ĂĄ,所以它会以某种方式改变 - 我认为 - 到 UTF-8 ......最重要的是我需要保存这个值到一个 ORACLE DB 并且在数据库中它也被保存为一个ĂĄ...

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",……这简直是要了我的命。

在此处输入图像描述

4

2 回答 2

0

完美的解决方案是:

图标v—Convert string to requested character encoding

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

字符串 str执行从in_charsetout_charset的字符集转换

在这种特殊情况下:

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

我真的不知道为什么,但正确的格式是:

 $encoded_text= iconv("UTF-8","ISO-8859-2",   $text);
于 2013-07-13T19:31:43.787 回答
0

看来我可以使用:

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 之间的区别, (从另一个答案中给出)

于 2013-07-13T19:22:39.157 回答