Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/298.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#序列化程序类编码问题_C#_Serialization_Xsd2code_Nexusdb - Fatal编程技术网

C#序列化程序类编码问题

C#序列化程序类编码问题,c#,serialization,xsd2code,nexusdb,C#,Serialization,Xsd2code,Nexusdb,我真的不明白这些角色是从哪里来的。我正在填充一个自定义类对象,然后将其序列化到磁盘,结果中出现奇怪的字符,如下所示: <Address1>_x0031_0028_x0020_N_x0020_30th_x0020_PL</Address1> \u x0031\u 0028\u x0020\u N\u x0020\u 30th\u x0020\u PL 正确答案如下: <Address1>10028 N 30th PL</Address1> 10

我真的不明白这些角色是从哪里来的。我正在填充一个自定义类对象,然后将其序列化到磁盘,结果中出现奇怪的字符,如下所示:

<Address1>_x0031_0028_x0020_N_x0020_30th_x0020_PL</Address1>
\u x0031\u 0028\u x0020\u N\u x0020\u 30th\u x0020\u PL
正确答案如下:

<Address1>10028 N 30th PL</Address1>
10028北纬30度
当我逐步浏览代码时,这些对象属性中的每一个看起来都很好,只有在它们序列化之后,才会注入奇怪的字符。我不确定的是,这些字符是否来源于它的源代码(一个Nexus DB表,该表),在VS中遍历代码时,我只是看不到奇怪的字符,或者这些字符是否确实是从对象本身序列化的结果。仅供参考,对象类源实际上是我已转换为类的模式对象

另一个注意事项:这个问题并不是发生在每个元素上,只是其中的一小部分

谢谢你在这方面的帮助


卡尔..

解决我自己的问题。问题是,我在模式中将一个字段定义为xs:ncname类型,然后在序列化数据源中的值时不符合此类型,因此在序列化时会相应地转换空格和前导数字


解决方案是将字段正确定义为xs:string。

您可能需要指定用于写入文件的编码。字符将被其十六进制表示形式替换。“1”实际上是0x0031,空格是0x0020。x前面的前导下划线特别奇怪。NET框架没有这样做,这几乎肯定是在它进入你的程序之前造成的破坏。是的,这就是我所怀疑的。有没有检查VS中字符的提示?我正在尝试确定这是在我从Nexus DB读取时发生的,还是在我填充了我的对象之后发生的。嗨,David,我尝试在读取和写入时指定UTF-8编码,但可能没有用尽全力。我想我会先问几个问题,事实上我不确定使用wgich编码。