Javascript 如何设置子窗口的字符编码
我正在打开一个子窗口,并用JavaScript将内容写入其中。父页面具有UTF-8字符集,但子窗口将以ISO-8859-1打开 我尝试使用document.write使用meta标记设置子页面内容类型,但似乎没有效果Javascript 如何设置子窗口的字符编码,javascript,encoding,utf-8,window.open,Javascript,Encoding,Utf 8,Window.open,我正在打开一个子窗口,并用JavaScript将内容写入其中。父页面具有UTF-8字符集,但子窗口将以ISO-8859-1打开 我尝试使用document.write使用meta标记设置子页面内容类型,但似乎没有效果 launcherHtml = ' <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset
launcherHtml = '
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
</head>
<body>
</body>
</html>
'
sandbox = window.open()
sandbox.document.open()
sandbox.document.write(launcherHtml)
sandbox.document.close()
sandbox.document.characterSet // ISO-8859-1 !!!
html='1〕
'
sandbox=window.open()
sandbox.document.open()文件
sandbox.document.write(HTML)
sandbox.document.close()文件
sandbox.document.characterSet//ISO-8859-1!!!
我也尝试过在子窗口中使用
作为标记,但结果是一样的
如何正确地将弹出窗口的字符集指定为UTF-8?这是一种2016年末的方法,适用于多种mime类型,包括“text/plain”和“text/html”:
- 使用数据URL
- 指定mime类型
- 将字符编码指定为UTF-8
- 使用
uriEncode
- 将UTF八位字节字符串中的“#”替换为“%23”
var launcherHtml = `
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>UTF-8 example</title>
</head>
<body>
<h1>Example using unicode and '#'</h1>
Hello folks, 你好! (nǐ hǎo) in Chinese, good evening,
こんばんは (in Japanese).
</body>
</html>
`;
var launcherURL = "data:text/html;charset=utf-8,"
+ encodeURI( launcherHtml).replace(/#/g,"%23");
sandbox = window.open(launcherURL)
sandbox.document.characterSet // UTF-8, yippee
var-html=`
UTF-8示例
使用unicode和“#”的示例
大家好,你好! (nǐhǎo)用中文说,晚上好,
こんばんは (日语)。
`;
var launcheurl=“data:text/html;charset=utf-8,”
+encodeURI(launcherHtml).replace(/#/g,“%23”);
沙盒=窗口。打开(启动器URL)
sandbox.document.characterSet//UTF-8,yippee
这看起来与问题的答案相同,但该问题没有公认的答案。也许其中一个答案是有效的。@EricJ。这看起来很相似,但我认为问题是在打开子窗口后父页面的编码发生了变化,而我想知道如何设置子窗口的编码。这并不能完全解决您的问题,但如果您将charset=“UTF-8”标记添加到此子页面中的任何javascript,至少javascript看起来工作正常。我遇到了一个问题,我的includeJavaScript中的UTF-8字符被误解了。