shuangmuxiaolin 2015-11-25 08:32 采纳率: 0%
浏览 1441

DataTable转XML奇怪字符

DataTable转XML奇怪字符.
自己拼接的DataTable,转换为XML后没问题。但是插入Oracle之后就出现中文的问号。
非常郁闷。
今天终于解决了。

 private string ConvertDataTableToXML(DataTable xmlDS)
        {
            MemoryStream ms = null;
            XmlTextWriter XmlWt = null;
            try
            {
                ms = new MemoryStream();
                //根据ms实例化XmlWt
                XmlWt = new XmlTextWriter(ms, Encoding.UTF8);
                //获取ds中的数据
                xmlDS.WriteXml(XmlWt);

                int count = (int)ms.Length;
                byte[] temp = new byte[count];

                ms.Seek(0, SeekOrigin.Begin);
                ms.Read( temp, 0, count);
                //返回UTF-8编码的文本
                UTF8Encoding ucode = new UTF8Encoding();
                string returnValue = ucode.GetString(temp).Trim();
                return returnValue;
            }
            catch (Exception)
            {
                return "";
            }
            finally
            {
                //释放资源
                if (XmlWt != null)
                {
                    XmlWt.Close();
                    ms.Close();
                    ms.Dispose();
                }
            }
        }


这里是有问题的代码。

我发现在XML前面有一个奇怪字符。所以将数据流从第三个字符开始取,就没问题了。
代码中改为:
ms.Seek(3, SeekOrigin.Begin);

解决!

  • 写回答

1条回答 默认 最新

  • 你知我知皆知 2024-08-04 21:04
    关注

    以下回答参考 皆我百晓生券券喵儿 等免费微信小程序相关内容作答,并由本人整理回复。

    在使用DataTable进行转换时,可能遇到的问题之一是其内部数据结构可能会包含特殊字符或Unicode序列。这些特殊字符可能被解析器误解或者导致错误的结果。为了处理这种情况,可以尝试以下方法来确保XML输出正确:

    1. 编码转换:首先,确保你正在使用的编码与源数据一致。如果使用的是UTF-8,则不需要特别处理。但如果你的数据是以其他编码存储的(例如,GB2312),则需要将其转换成UTF-8。

    2. 预处理字符串:在转换到XML之前,对数据进行预处理,移除所有非必需的或特殊的字符。这可以帮助避免任何潜在的编码问题。

    3. 检查和替换特殊字符:在转换过程中,手动检查并替换任何可能导致问题的特殊字符。这一步骤通常涉及到编程技巧,并且取决于你的具体需求。

    4. 测试边界条件:对于一些特定的输入情况,比如空值、null值等,你需要考虑如何处理它们,以防止在转换过程中出现问题。

    5. 使用数据库引擎提供的功能:许多数据库引擎提供内置的功能来处理各种特殊情况,包括特殊字符的处理。例如,在SQL Server中,你可以使用NVARCHAR2类型来表示这些特殊字符。

    6. 利用第三方库:如果你的工作环境支持,可以考虑使用一些专门针对数据库操作的库,如ODBC、ADO.NET等,这些库通常已经进行了编码转换和特殊字符处理的优化。

    7. 使用正则表达式:在某些情况下,可以使用正则表达式来匹配和替换特定类型的特殊字符。

    总之,要确保DataTable转换为XML结果的准确性,需要综合考虑多种因素,并采取适当的措施来处理可能存在的特殊字符。希望这些建议对你有所帮助!

    评论

报告相同问题?