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

如何使用C#将DOC转TXT并转换UTF-8实体为十六进制NCR序列

在C#中实现DOC转TXT并将UTF-8字符转换为十六进制NCR序列

我来给你分享一个实用的实现方案,刚好能覆盖你提到的两个需求——先把DOC文档转成TXT格式,再自动将文本中的非ASCII UTF-8字符转换成&#xXXXX;格式的十六进制NCR序列。

第一步:DOC转TXT格式

要处理DOC文件,最常用的方式是借助Microsoft.Office.Interop.Word组件(需要先在项目中安装对应的NuGet包:Microsoft.Office.Interop.Word)。下面是实现代码,注意要正确释放COM对象,避免Word进程残留:

using Microsoft.Office.Interop.Word;
using System.IO;

public static void ConvertDocToTxt(string docFilePath, string txtOutputPath)
{
    // 创建Word应用实例,设置为后台运行
    Application wordApp = new Application { Visible = false };
    Document doc = null;

    try
    {
        // 打开目标DOC文档
        doc = wordApp.Documents.Open(docFilePath);
        
        // 将文档保存为纯文本格式
        doc.SaveAs2(txtOutputPath, WdSaveFormat.wdFormatText);
        Console.WriteLine($"DOC转TXT完成,输出路径:{txtOutputPath}");
    }
    finally
    {
        // 释放资源,必须确保COM对象被正确关闭
        doc?.Close();
        wordApp.Quit();
        
        // 手动释放COM对象,避免进程残留
        System.Runtime.InteropServices.Marshal.ReleaseComObject(doc);
        System.Runtime.InteropServices.Marshal.ReleaseComObject(wordApp);
    }
}

如果不想依赖Office组件,也可以用第三方库比如DocX(NuGet包:DocX),它更轻量且不需要安装Office,适合服务器环境:

using Novacode;
using System.IO;

public static void ConvertDocToTxtWithoutOffice(string docFilePath, string txtOutputPath)
{
    using (DocX doc = DocX.Load(docFilePath))
    {
        string textContent = doc.Text;
        File.WriteAllText(txtOutputPath, textContent, Encoding.UTF8);
        Console.WriteLine($"DOC转TXT完成,输出路径:{txtOutputPath}");
    }
}

第二步:将UTF-8字符转换为十六进制NCR序列

接下来处理文本内容,把非ASCII的UTF-8字符转换成&#xXXXX;格式。核心逻辑是遍历每个字符,判断是否为ASCII字符(Unicode值≤127),如果不是就获取其十六进制Unicode码,拼接成NCR格式:

using System.Text;

public static string ConvertToHexNcr(string inputText)
{
    StringBuilder result = new StringBuilder();
    
    foreach (char c in inputText)
    {
        // 只转换非ASCII字符(Unicode值大于127)
        if (c > 127)
        {
            // 格式化为4位十六进制,大写,拼接成NCR序列
            string hexCode = ((int)c).ToString("X4");
            result.Append($"&#x{hexCode};");
        }
        else
        {
            // ASCII字符直接保留
            result.Append(c);
        }
    }
    
    return result.ToString();
}

整合两个功能

把上面两个步骤结合起来,实现从DOC到处理好NCR序列的TXT的完整流程:

public static void ProcessDocToNcrTxt(string docFilePath, string finalTxtOutputPath)
{
    // 第一步:先转成临时TXT
    string tempTxtPath = Path.Combine(Path.GetDirectoryName(docFilePath), "temp_output.txt");
    ConvertDocToTxt(docFilePath, tempTxtPath);
    
    // 第二步:读取临时TXT内容,转换NCR
    string originalText = File.ReadAllText(tempTxtPath, Encoding.UTF8);
    string ncrText = ConvertToHexNcr(originalText);
    
    // 第三步:保存最终处理后的TXT
    File.WriteAllText(finalTxtOutputPath, ncrText, Encoding.UTF8);
    
    // 删除临时文件(可选)
    File.Delete(tempTxtPath);
    
    Console.WriteLine($"处理完成,最终文件路径:{finalTxtOutputPath}");
}

测试示例

输入文本:

Isto é um teste. Eu não me importo com o que você pensa. Você acha que me conhece muito bem.

经过处理后输出:

Isto é um teste. Eu não me importo com o que você pensa. Você acha que me conhece muito bem.

完全符合你给出的示例要求~

内容的提问来源于stack exchange,提问作者Tamal Banerjee

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 03:39:17