Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/412.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
使用外部JS文件中的jQuery填充下拉列表时出现JavaScript字符问题_Javascript_Jquery_Iphone_Encoding_Safari - Fatal编程技术网

使用外部JS文件中的jQuery填充下拉列表时出现JavaScript字符问题

使用外部JS文件中的jQuery填充下拉列表时出现JavaScript字符问题,javascript,jquery,iphone,encoding,safari,Javascript,Jquery,Iphone,Encoding,Safari,当我使用jQuery从外部js文件加载下拉列表时,遇到了字符编码问题。这似乎只在JavaScript对象不在页面内时发生 例如,下面是JavaScript对象 var langs = [ {value:'zh-CN', text:'中文 (简体) Chinese Simplified'}, {value:'en', text:'English'}, {value:'eo', text:'EsperAnt'}, {value:'es', text:'Español'}, {va

当我使用jQuery从外部js文件加载下拉列表时,遇到了字符编码问题。这似乎只在JavaScript对象不在页面内时发生

例如,下面是JavaScript对象

var langs = [
  {value:'zh-CN', text:'中文 (简体) Chinese Simplified'},
  {value:'en', text:'English'},
  {value:'eo', text:'EsperAnt'},
  {value:'es', text:'Español'},
  {value:'ja', text:'日本語 (Japanese)'},
  {value:'pt-PT', text:'Português'},
  {value:'ru', text:'Русский (Russian)'},
 ];
如果这是在我的网页与适当的元标签下面的代码工程

$(document).ready(function() {
                // Fill language select
                $.each(langs, function(i, j){  
     $('#LangSelect').append($("<option></option>").attr("value",j.value).text(j.text));
                });
但是,由于我需要在不止一个页面上使用语言,我已经将langs对象移动到一个外部js文件并引用它。这样做之后,我遇到了一些编码问题,比如俄文字符变成俄文

即使将对外部js文件的引用设置为如下所示,此编码问题似乎仍会出现:

<script type="text/javascript" charset="UTF-8" src="externalJS.js"></script>
是否存在强制JavaScript对象从外部文件加载正确编码的方法

请注意,我在iPhone Mobile Safari浏览器上查看内容时遇到这些问题。此外,这些页面只是html和JavaScript,没有任何服务器端组件

提前感谢,,
Ben

确保使用UTF-8编码保存javascript文件。如果您在记事本++中打开文件,那么您可以单击Format>Encode in UTF-8如果您尝试Format>Convert to UTF-8,然后使用十六进制编辑器查看页面。有时文件开头会出现一些奇怪的字符

是否存在强制JavaScript对象从外部文件加载正确编码的方法

是的,如您所引用的脚本字符集属性。然而,从历史上看,它并不适用于任何地方,最好不要依赖它。如果不支持,浏览器将始终使用主页的字符集作为脚本中的字符集。因此,只要在主页面中包含UTF-8字符集参数,无论哪种方式都可以

不过,如果像Mobile Safari这样的现代浏览器不理解它,我会感到惊讶

您的服务器是否可能正在使用包含错误字符集的错误内容类型头提供.js文件?Apache中JS和AddDefaultCharset的未设置mime类型组合可能会给您带来:

Content-Type: text/plain;charset=iso-8859-1

这可能会把事情搞砸。

最好重新标记你的问题,以表明问题出在iPhone的Safari浏览器上。我相信浏览器一般不会表现出这种行为。至少Firefox没有。谢谢kgiannakakis,我添加了一些额外的标签。这对我来说有点奇怪,因为在这种情况下,人们希望使用的所有标准字符设置都不起作用。也许iPhone处理外部引用编码的方式有些奇怪