VBScript - 如何在 UTF8 中对显示不正确的希腊字符进行编码?

问题描述 投票:0回答:1

我编写了一个 VBScript 代码来打印希腊字符。 这里的问题是字符显示不正确,即使在我尝试使用 UTF-8 进行编码后也是如此。

我在下面发布我的 VBScript 代码:

MsgBox("Θραύσεις Κρυστάλλων") 'The text here appears as weird unreadable symbols because of the current default encoding

Set stream = CreateObject("ADODB.Stream")
stream.Open
stream.Type     = 2 'text
stream.Position = 0
stream.Charset  = "utf-8"

stream.WriteText "Θραύσεις Κρυστάλλων" 'here i supply the text again, to the Stream

stream.Flush
stream.Position = 0
stream.Type     = 1 'binary
stream.Read(3)      'skip BOM
utfStr = stream.Read
stream.Close
Set stream = Nothing

MsgBox(utfStr) 'Here I print the UTF8-encoded string from the stream. It appears different from the 1st messagebox, but still incorrectly

我可能会错过什么?我应该通过文本文件提供希腊文本,并避免使用变量吗?

提前致谢!

encoding utf-8 vbscript character-encoding
1个回答
1
投票

VBScript 不支持 UTF-8。它将把 UTF-8 作为 ANSI 处理,因此您可以读写 UTF-8 文件(因为它只是作为字节流处理),但无法正确显示 UTF-8 编码的字符。您有两个选择:

选项1

将脚本另存为 UTF-16 LE

MsgBox 将正确显示字符。

请注意,就像任何其他 VBS 脚本一样,消息框对话框将使用 DPI 虚拟化在设置为高于 100% 缩放比例的显示器上显示。这使得显示模糊。

选项2

将 VBS 脚本嵌入保存为 UTF-8 的 HTA 中

在此示例中,HTA 窗口通过将其移出屏幕来隐藏。如果您希望构建更复杂的界面,那么您可以将 HTA 窗口保留在屏幕上并使用 HTML/CSS 来构建 GUI。

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8" http-equiv="X-UA-Compatible" content="IE=11">
<script language="VBScript">
Window.MoveTo 999999999,999999999
MsgBox "Θραύσεις Κρυστάλλων"
</script>
</head>
<body>
</body>
</html>

未使用DPI虚拟化。无论显示比例设置如何,消息框都会以正确的尺寸清晰显示。

© www.soinside.com 2019 - 2024. All rights reserved.