从Word VBA写入文本文件的UTF8编码失败

时间:2015-10-21 16:14:26

标签: vba unicode encoding utf-8 ms-word

我正在使用MS Word编辑使用VBA转换为结构化HTML的文本。

使用带有编码的document.saveas2写出文本:= msoEncodingUTF8。

今天我发现商标符号[编辑:使用插入符号功能插入; “插入选项卡”,“符号组”,“符号按钮”在文本文件中显示为"(tm)"。

发现编码:= 65001也应该产生UTF8,我试过了 - 在一种情况下它似乎有用,但结果不可重复。

我还了解到,如果比Unicode早,Word可能会对某些字符使用私有代码页,所以我也直接输入了unicode代码,后跟alt-X; TM符号正确显示但仍无法写入文本文件。

虽然我已经能够通过用HTML"&更换TM来解决这个问题。贸易;" (额外的空格以防止它被渲染为符号!),我担心其他编码失败的可能性。

任何人都可以对此问题的原因有所了解或提供有效的解决方案/缓解措施吗?

系统配置:Word 2010; Windows 7 64位。

1 个答案:

答案 0 :(得分:1)

我录制了一个宏来保存一些在我的系统默认代码页中显然不支持的中文文本,Windows-1252。我以.txt格式保存,并询问了我选择UTF-8的编码。结果如下:

ActiveDocument.SaveAs2 FileName:="The.txt", FileFormat:=wdFormatText, _
    LockComments:=False, Password:="", AddToRecentFiles:=True, WritePassword _
    :="", ReadOnlyRecommended:=False, EmbedTrueTypeFonts:=False, _
    SaveNativePictureFormat:=False, SaveFormsData:=False, SaveAsAOCELetter:= _
    False, Encoding:=65001, InsertLineBreaks:=False, AllowSubstitutions:= _
    False, LineEnding:=wdCRLF, CompatibilityMode:=0

它确实以UTF-8正确保存文件。我将宏编辑到下面的最小代码,它仍然有效。

ActiveDocument.SaveAs2 FileName:="test.txt", FileFormat:=wdFormatText, _
    AllowSubstitutions:=False, Encoding:=65001