首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用外部JS文件中的jQuery填充下拉菜单时的JavaScript字符问题

问使用外部JS文件中的jQuery填充下拉菜单时的JavaScript字符问题
EN

Stack Overflow用户
提问于 2009-11-09 20:15:24
回答 2查看 1.1K关注 0票数 1

当我使用jQuery从外部js文件加载下拉菜单时,我遇到了一个字符编码问题。这似乎只有在JavaScript对象不在页面中时才会发生。

例如,下面是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)'},
 ];

如果这是在我的页面与适当的元标签<meta http-equiv="content-type" content="text/html; charset=utf-8" />,下面的代码工作。

代码语言:javascript
复制
$(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文件的引用设置如下:

代码语言:javascript
复制
<script type="text/javascript" charset="UTF-8" src="externalJS.js"></script>

有没有办法强制从外部文件中使用正确的编码加载JavaScript对象?

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

先谢谢你,本

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-11-09 21:14:30

有没有办法强制从外部文件中使用正确的编码加载JavaScript对象?

是的,就是您引用的script charset属性。然而,从历史上看,它并不适用于所有地方,最好不要依赖它。在不支持的情况下,浏览器将始终使用主页的字符集作为脚本中的字符集。因此,只要在主页中包含UTF-8字符集参数,这两种方法都应该没问题。

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

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

代码语言:javascript
复制
Content-Type: text/plain;charset=iso-8859-1

可能会有搞砸的效果。

票数 0
EN

Stack Overflow用户

发布于 2009-11-09 20:45:16

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1700643

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档