You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用OpenXML从Word模板生成docx时■符号显示为?的求助

解决OpenXML中Word书签插入■符号显示为?的问题

问题根源在于OpenXML对Unicode特殊字符的默认处理逻辑,以及字体对该符号的支持性,以下是具体解决方案:

1. 强制保留特殊字符

OpenXML的Text元素默认会过滤或转换非ASCII字符,导致■丢失。需为Text对象设置Space属性为SpaceProcessingModeValues.Preserve,强制保留字符:

Run run = new Run();
if (runProperties != null)
{
    run.AppendChild(runProperties);
}
// 修改Text初始化代码,添加Space属性
run.AppendChild(new Text(value) { Space = SpaceProcessingModeValues.Preserve });

2. 指定支持该符号的字体

若模板字体不支持■(Unicode编码U+25A0),即使字符正确也会显示为问号。可在RunProperties中添加支持该字符的字体(如宋体、微软雅黑):

Run run = new Run();
if (runProperties == null)
{
    runProperties = new RunProperties();
}
// 配置支持Unicode字符的字体
runProperties.AppendChild(new Fonts()
{
    Ascii = "SimSun",
    HighAnsi = "SimSun",
    EastAsia = "SimSun"
});
run.AppendChild(runProperties);
run.AppendChild(new Text(value) { Space = SpaceProcessingModeValues.Preserve });

3. 确保字符编码正确

直接使用Unicode转义字符赋值value,避免编码错误导致字符异常:

string value = "\u25A0"; // 直接使用■的Unicode编码值

内容的提问来源于stack exchange,提问作者Brad Huang

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 13:05:43