Sal*_*lty 57 ajax jquery character-encoding
我目前正在编写一个法国网站.有一个计划页面,侧面的链接可用于加载另一天的计划.
这是我用来做这个的JS:
<script type="text/javascript">
function load(y) {
$.get(y,function(d) {
$("#replace").html(d);
mod();
});
}
function mod() {
$("#dates a").click(function() {
y = $(this).attr("href");
load(y);
return false;
});
}
mod();
</script>
Run Code Online (Sandbox Code Playgroud)
实际的AJAX就像一个魅力.我的问题在于对请求的响应.
因为它是法国网站,所以有许多重音字母.出于这个原因,我正在使用ISO-8859-15字符集.但是,在对我的AJAX请求的响应中,重音变成了?因为字符编码似乎被改回到UTF-8.
我该如何避免这种情况?我已经尝试在请求的文档顶部添加一些PHP来设置字符集:
<?php header('Content-Type: text/html; charset=ISO-8859-15'); ?>
Run Code Online (Sandbox Code Playgroud)
但这似乎也不起作用.有什么想法吗?
此外,虽然你们中的任何人都在看这里...为什么最新的列在加载新页面时似乎变得更小,导致表扭曲并且每个<li>
列<td>
都包裹到下一行?
干杯
Mag*_*nar 64
在AJAX调用上指定内容类型解决了我在挪威站点上的问题.
$.ajax({
data: parameters,
type: "POST",
url: ajax_url,
timeout: 20000,
contentType: "application/x-www-form-urlencoded;charset=ISO-8859-15",
dataType: 'json',
success: callback
});
Run Code Online (Sandbox Code Playgroud)
您还必须在服务器上指定charset.
<?php header('Content-Type: text/html; charset=ISO-8859-15'); ?>
Run Code Online (Sandbox Code Playgroud)
yoa*_*avf 23
UTF-8应该处理所有重音和外来字符 - 为什么不在数据源上使用它?
编辑
[ 存档测试文件的副本.]与您的数据
一切都应该是UTF-8.我在notepad ++中加载文件,转换为utf-8并手动将字符改为重音符号.一旦完成,一切都像魅力一样.
顺便说一句,除非您的服务器被定义为php-process .html文件,否则您使用ajax加载的文件不会获得您的iso字符集.如果你坚持使用iso charset,请求一个php文件而不是一个html文件,并在头文件中定义charset(不在文件本身中)
kgi*_*kis 10
您需要将服务器设置为使用ISO-8859-15作为字符编码(添加适当的HTTP标头).在html的主体中执行它将无济于事.
我可以看到这一行
<?php header('Content-Type: text/html; charset=ISO-8859-15'); ?>
Run Code Online (Sandbox Code Playgroud)
在您的HTML的源头.这不应该发生.使用Live HTTP标头我看不到相应的charset HTTP标头.将其用于第一页和ajax服务.
我强烈建议使用javascript escape()方法
你可以通过抓取像这样的表单值来使用它与jQuery:
var encodedString = escape($("#myFormFieldID").val());
Run Code Online (Sandbox Code Playgroud)
小智 7
对于我的PHP应用程序,解决方案包括每个变量的utf8_decode函数$_POST
.
例如:(服务器端)
if( strtoupper($_SERVER['REQUEST_METHOD']) == "POST" ){
$variable = htmlentities($_POST['variable']); // wrong
$variable = htmlentities( utf8_decode($_POST['variable']) ); // right
}
Run Code Online (Sandbox Code Playgroud)
Abraços!(再见!!!)
在ajax文件中打印出变量时.放一个
htmlentities()
Run Code Online (Sandbox Code Playgroud)
在他们周围,看看它是否有效.在冰岛的ajax应用程序中为我工作.