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);
解决!
...全文
162 6 打赏 收藏 转发到动态 举报
写回复
用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
  • 打赏
  • 举报
回复
出现中文的问号 -》 那是乱码。
内容概要:本文围绕基于PI双闭环解耦控制的三相电压型PWM整流器在第四象限运行的仿真研究展开,重点分析其在电流反向流动工况下的控制性能。通过Simulink搭建系统模型,采用电压外环与电流内环构成的双闭环PI控制策略,并引入d-q轴解耦环节以消除交叉耦合影响,实现对整流器在能量回馈状态下的高精度、稳定控制。研究涵盖了系统数学建模、控制器参数设计、解耦算法实现及动态响应仿真验证,充分展示了该控制方法在抑制扰动、提升系统鲁棒性方面的有效性。; 适合人群:电力电子、电气工程及其自动化等相关专业的研究生、科研人员及从事新能源变流器、电能质量治理或工业传动系统开发的工程技术人员;具备自动控制理论基础和Simulink仿真能力者更佳。; 使用场景及目标:①深入掌握三相电压型PWM整流器的工作原理及其在不同运行象限的能量流动特性;②理解并实践PI双闭环控制系统的设计思路与参数整定方法;③学习d-q坐标系下电流解耦控制的实现机制;④熟练运用Simulink进行电力电子系统建模与仿真分析;⑤为实际工程中实现高效能量双向变换提供理论依据与技术参考。; 阅读建议:建议结合Simulink环境同步搭建模型,细致分析各模块的信号流向与控制逻辑,重点关注电流内环的动态跟踪能力和电压外环的稳态调节性能,可通过改变负载突变、电网电压波动等条件进行对比实验,进一步评估系统的抗干扰能力与稳定性表现。

111,129

社区成员

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

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

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