Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript escape在webhost上不工作_Javascript_Character Encoding - Fatal编程技术网

javascript escape在webhost上不工作

javascript escape在webhost上不工作,javascript,character-encoding,Javascript,Character Encoding,我对Apache上运行的javascript有点陌生,但我有以下问题 我使用escape使字符串“Café”可以在使用javascript的url中使用 "&place=" + escape(placename); 字符串被转换为“Caf%E9”,然后在下一个页面(php页面)中表示为“Café” 一切都很好,但是,当我上传代码到我的网络主机时,它被翻译成“Caf%C3%A9”。并在页面中显示为“Café” 我使用UTF-8进行解码。我的网络主机使用iconv.input_编码ISO

我对Apache上运行的javascript有点陌生,但我有以下问题

我使用escape使字符串“Café”可以在使用javascript的url中使用

"&place=" + escape(placename);
字符串被转换为“Caf%E9”,然后在下一个页面(php页面)中表示为“Café”

一切都很好,但是,当我上传代码到我的网络主机时,它被翻译成“Caf%C3%A9”。并在页面中显示为“Café”

我使用UTF-8进行解码。我的网络主机使用iconv.input_编码ISO-8859-1

我认为问题就在这里。解决这个问题的最佳方法是什么?将我的UTF-8更改为ISO-8859-1,或者是否有一些转换器功能

编辑 我有UTF8元标签

<meta http-equiv="content-type" content="text/html; charset=utf-8"/>
编辑:添加代码

这就是代码,它在本地的行为与在web上的不同。代码使用谷歌地图API

    var lat = place.geometry.location.lat();
var lng = place.geometry.location.lng();
var placename = place.name;
var placerating = place.rating;
if (placerating == undefined) {
    placerating = 0;
}
var placeaddress = place.vicinity;
var website = place.website;
var url = place.url;

var day = new Date();
var m = day.getMonth() + 1;
var d = day.getDate();
var y = day.getFullYear();

var formUrl = "myform.php?d=" + d + "&m=" + m + "&y=" + y + "&lat=" + lat + "&lng=" + lng + "&place=" + encodeURIComponent(placename);
注意,当我发出警报(placename)时,它会在两种环境中给出相同的结果。即, “咖啡馆”

解决方案

我的Web主机使用了另一种编码,强制页面使用ISO-8859-1。尽管我使用了html元标记

在页面的开头添加以下PHP标题

header("Content-type: text/html; charset=utf-8");
header("Content-type: text/html; charset=utf-8"); 
蒂亚,
Coen

escape
不是用于转义查询字符串参数的,这就是它的用途<代码>转义做了一些类似但不同的事情,因此它与等式中的服务器部分不完全兼容

但是,单独来说,不能使用一种编码对文本进行编码,而在另一端使用另一种编码对其进行成功解码。您应该能够通过apache头将页面放在UTF-8而不是ISO-8859-1中。如果不能在标题中执行,可以在HTML中执行:
标题顶部的

<meta charset="UTF-8">

…当然,还要确保文件确实是以UTF-8编码的(例如,检查编辑器设置等)

在这里,StackOverflow可能也很有用,它讨论了与URI相关的编码。

解决方案

我的Web主机使用了另一种编码,强制页面使用ISO-8859-1。尽管我使用了html元标记

在页面的开头添加以下PHP标题

header("Content-type: text/html; charset=utf-8");
header("Content-type: text/html; charset=utf-8"); 

或者,我要求我的网络主机将编码更改为UTF-8,他们确实这样做了。

现在,我要键入:p Hi TJ,我已经尝试过了,我确实使用了元标记,但没有区别。奇怪吧?嗨,TJ,我认为页面很好,我只是想知道为什么字符串咖啡馆在我的webhost上的JavaScript转换与在我的开发机器上的本地转换不同。当我“警告”encodeURIComponent(placename)时,它给出(在浏览器客户端)两个不同的结果(??)我已经找到了,在我的Web主机上,编码被强制为拉丁文unicode U+00E9é==c3 a9拉丁文小写字母E加上锐音符。即使我将meta标记设置为UTF-8,它仍然编码为iso-8859-1。我怎么能绕过它呢?嗨,TJ,我的Web主机有一个默认字符集ISO-8859-1,在本地我使用Apache配置“AddDefaultCharset UTF-8”。因此存在着不匹配。在FF中,我将encodig更改为UTF-8,页面工作正常。因此,我的代码没有问题,但问题在于我的网站的配置。谢谢你帮我指明了正确的方向。