DataTable转XML奇怪字符

shuangmuxiaolin 2015-11-25 04:36:01
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);
解决!
...全文
104 6 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
xuzuning 2015-11-27
  • 打赏
  • 举报
回复
用于 是 由于 之误 由于是保存为 utf-8 编码的,所以有一个 3字节 的 BOM
xuzuning 2015-11-27
  • 打赏
  • 举报
回复
这很正常!显然你的 XML 文件用记事本之类的低档文本编辑器编辑过 用于是保存为 utf-8 编码的,所以有一个 3字节 的 BOM (efbbbf)
shuangmuxiaolin 2015-11-26
  • 打赏
  • 举报
回复
引用 2 楼 byronqiji 的回复:
//返回UTF-8编码的文本 你查下数据库是什么字符集 或许是gb2312 感觉你的问题在于转成了UTF-8
不是因为转成了UTF-8的原因 这里是解决后的代码: 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-3; byte[] temp = new byte[count]; ms.Seek(3, 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(); } } }
shuangmuxiaolin 2015-11-26
  • 打赏
  • 举报
回复
引用 1 楼 duanzi_peng 的回复:
出现中文的问号 -》 那是乱码。
不是乱码,在Windows字符集下都没问题。 我断点获取字符串,拷贝到Txt文本,Word中都没有任何异常。但是粘帖到PLSql 中就出现一个奇怪的小点点。 Insert到Oralce就出现一个中文的问号了。
byronqiji 2015-11-25
  • 打赏
  • 举报
回复
//返回UTF-8编码的文本 你查下数据库是什么字符集 或许是gb2312 感觉你的问题在于转成了UTF-8
  • 打赏
  • 举报
回复
出现中文的问号 -》 那是乱码。

111,096

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧