当我使用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)'},
];如果这是在我的页面与适当的元标签<meta http-equiv="content-type" content="text/html; charset=utf-8" />,下面的代码工作。
$(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,没有任何服务器端组件。
先谢谢你,本
发布于 2009-11-09 21:14:30
有没有办法强制从外部文件中使用正确的编码加载JavaScript对象?
是的,就是您引用的script charset属性。然而,从历史上看,它并不适用于所有地方,最好不要依赖它。在不支持的情况下,浏览器将始终使用主页的字符集作为脚本中的字符集。因此,只要在主页中包含UTF-8字符集参数,这两种方法都应该没问题。
然而,如果像Mobile Safari这样的现代浏览器不能理解它,我会感到惊讶。
您的服务器是否可能正在使用包含错误字符集的错误内容类型头来提供.js文件?在Apache中,JS和AddDefaultCharset的未设置mime类型的组合可能会给您留下:
Content-Type: text/plain;charset=iso-8859-1可能会有搞砸的效果。
发布于 2009-11-09 20:45:16
确保使用UTF-8编码保存javascript文件。如果您在Notepad++中打开该文件,那么您可以单击Format>Encode in UTF-8 (如果您尝试将Format>Convert转换为UTF-8,然后使用十六进制编辑器查看页面。有时你会在文件的开头出现一些奇怪的字符)。
https://stackoverflow.com/questions/1700643
复制相似问题