java十六进制0xaa_“.”(十六进制值 0x00)是无效的字符解决方案
自从我们的项目数据层从读取数据库改为读取接口服务后,经常会出现一些类似于
的错误。我们的数据结构如下所示
->,C#为正则表达式提供了强大的支持,本课程重点讲述在C#环境下使用正则表达式,并能够学会分析创建属于自己的正则表达式,学习正则表达式请访问http://edu.51cto.com/course/course_id-4664.html]]>
接口数据
在用户输入的数据中常常有一些小人箭头之类的特殊符号(由于在www.cnblogs.com/xietong下不支持这些特殊符号,所以读者在我举例的数据结构中看不到这些特殊符号),我曾经尝试匹配这些特殊字符,然而未能找到与之相匹配的unicode代码区块,所以采用了匹配正常字符的方式来获取合法的数据用于xml解析。可以看到我们数据中的字符包括字母数字、各种标点、空白符,据此可以写出我们的正则表达式"(\w|\p{P}|\s)*"。在RegxTest下测试发现无法匹配“<>=”这些符号,加上这些符号后正则表达式为"(\w|\p{P}|[<>=]|\s)*",经测试,发现可以获取到所有正常的字符,在c#中代码如下:
string content = sb.ToString();
MatchCollection matches = Regex.Matches(content, @"(\w|\p{P}|[<>=]|\s)*");
sb = new StringBuilder();
foreach (Match m in matches)
{
sb.Append(m.Value);
}
content = sb.ToString();
在运行之后发现类似异常虽然少了很多,但还是有一部分异常,查看这些异常发现造成这些异常的原因正是存在16进制的字符,数据如下:
如果直接将0x式样的16进制去掉,那么这些图片就无法找到正确地址,似乎有些粗鲁。为此,我决定将相应的变量先取出来,然后在读取出来的DataSet中重新对相应字段赋值。我的代码如下:
MatchCollection imatches = null;
if (Regex.IsMatch(content, "0x[0-9a-fA-F]+", RegexOptions.IgnoreCase))
{
Regex regex = new Regex(@"\k'tag'>");
imatches = regex.Matches(content);
if (imatches != null)
{
content = regex.Replace(content, "${tag}>");
}
}
System.Xml.XmlDocument xd = new System.Xml.XmlDocument();
xd.LoadXml(content);
System.Xml.XmlNodeReader xnr = new System.Xml.XmlNodeReader(xd);
ds.ReadXml(xnr);
xnr.Close();
if (imatches != null && imatches.Count > && ds != null && ds.Tables.Count > )
{
foreach (Match m in imatches)
{
foreach (DataTable table in ds.Tables)
{
if (table.Columns.Contains(m.Groups["tag"].Value))
{
table.Rows[][m.Groups["tag"].Value] = m.Groups["text"].Value;
break;
}
}
}
}
在上面的代码中用到了正则的文本替换及分租,如果有不理解的地方可以在http://edu.51cto.com/course/course_id-4664.html中学习一下基本的C#正则表达式知识。
上面的代码经测试可以正常运行,但放到那里呢,虽然在try-catch抛出异常,在异常中处理的话要耗费几百个时钟周期,但鉴于问题数据只是一小部分,并且上面的正则表达式的效率并不太高,所以我将上面的代码放在了catch语句块中。
[No0000133]c# ERROR:“.”(十六进制值 0x00)是无效的字符
December 24, 2013 c# exception “.”(十六进制值 0x00)是无效的字符. 解决方法:常见于socket方式连接(包括HTTP方式)等.报文交互时候,对方会在字符串后面 ...
调用webservice接口,报错:(十六进制值0x01)是无效的字符
#事故现场 调用webservice接口,报错:(十六进制值0x01)是无效的字符. 如图: 意思是webservice返回的信息中包含无效的字符,无法解析成xml: #分析 使用postman向we ...
SSRS 在订阅的时候,在头值中找到无效的字符。将不重新发送邮件
在头值中找到无效的字符.将不重新发送邮件 SSRS 在订阅的时候,在头值中找到无效的字符.将不重新发送邮件! 查看了一下,只要是发送文件类型的都不可以,改成HTML的就可以.然后重新把RS的报表文件友 ...
XML 十六进制值 是无效的字符错误 解决方法之一 转
/// /// 过滤非打印字符 /// /// 待过滤
C#十六进制值0x12,是一个无效字符 - 程序园
原文:C#十六进制值0x12,是一个无效字符 - 程序园 我正在加载很多xml文档,其中一些返回错误,如“十六进制值0x12,是无效字符”,并且有不同的字符.如何删除它们? 我在这里做了一个小的研 ...
MySql_十六进制值
十六进制值 MySQL支持十六进制值.在数字上下文中,十六进制数如同整数(64位精度).在字符串上下文,如同二进制字符串,每对十六进制数字被转换为一个字符: mysql> SELECT x'4D ...
CSS:CSS 颜色十六进制值
ylbtech-CSS:CSS 颜色十六进制值 1.返回顶部 1. 根据十六进制值排序 所有浏览器都支持的颜色名 根据颜色名排序的相同列表 颜色名 十六进制颜色值 颜色 Black #000000 ...
thinkphp事务处理以及无效时的解决方案(整理)
thinkphp事务处理以及无效时的解决方案(整理) 一.总结 一句话总结:要程序里面支持事务,首先连接的数据库和数据表必须支持事务 mysql 1.InnoDB和MyISAM对事务的支持怎么样? I ...
随机推荐
IOSGCD
http://blog.csdn.net/duxinfeng2010/article/details/8958681/ http://kyfxbl.iteye.com/blog/1997516
Linux 系统下查看硬件信息命令大全
有许多命令可以用来查看 Linux 系统上的硬件信息.有些命令只能够打印出像 CPU 和内存这一特定的硬件组件信息,另外一些命令可以查看多种硬件组件的信息. 这个教程可以带大家快速了解一下查看各种硬件 ...
利用jQuery打造个性网站
网页结构 编写全局样式(reset.css) /*全局样式*/ body,h1,h2,h3,h4,h5,h6,hr,p,blockquote,dl,dt,dd,ul,ol,li,pre,form,fi ...
[Noi2016]国王饮水记
来自FallDream的博客,未经允许,请勿转载,谢谢. 跳蚤国有 n 个城市,伟大的跳蚤国王居住在跳蚤国首都中,即 1 号城市中.跳蚤国最大的问题就是饮水问题,由于首都中居住的跳蚤实在太多,跳蚤国王 ...
谈谈JAVA中的安全发布
谈谈JAVA中的安全发布 昨天看到一篇文章阐述技术类资料的"等级",看完之后很有共鸣.再加上最近在工作中越发觉得线程安全性的重要性和难以捉摸,又掏出了
接前一篇:new select option保存搜索条件
WD_SELECT_OPTIONS_20新加了很多好玩的东西,尤其是里面的保存搜索条件和使用保存的搜索条件.因为这个比较想WEB UI,所以兴趣比较高一点,WEB UI里是把参数拼成XML存起来的,我 ...
【搬运】 Page Object 官方文档 (新增了Widget特性)
Appium Java client has facilities which components to [Page Object](https://github.com/SeleniumHQ/se ...
[c/c++] programming之路(12)、循环结构
一.求2n #include void main(){ ; ; while(n--){ s*=; printf("%d,%d\n",s,n); } g ...
TypeScript 之 模块
https://m.runoob.com/manual/gitbook/TypeScript/_book/doc/handbook/Modules.html 外部模块简写 外部模块简写:declare ...
作业 20181204-5 Final阶段贡献分配规则及实施
此作业要求参见:[https://edu.cnblogs.com/campus/nenu/2018fall/homework/2479] 小组介绍 组长:付佳 组员:张俊余 李文涛 孙赛佳 田良 于洋 ...
java十六进制0xaa_“.”(十六进制值 0x00)是无效的字符解决方案相关推荐
- 关于(十六进制值 0x00)是无效的字符
终于把自已恶搞一把,平时图省劲用山寨客户端向服务器提交数据,数据编码一直有问题.鄙人负责服务器的WCF接口开发,于是有一天测试WCF时填了自己的用户名,接下来报错 (十六进制值 0x00)是无效的字符 ...
- NuGet.Config 不是有效的 XML。路径十六进制值 0x00)是无效
Vs2017打开ABP Zero core 项目报错,报错信息如下: NuGet配置不是有效的XML.:'C:\Users\Administrator\AppData\Roaming\NuGet\Nu ...
- 调用webservice接口,报错:(十六进制值0x01)是无效的字符。
文章目录 #事故现场 #分析 #解决方法 #事故现场 调用webservice接口,报错:(十六进制值0x01)是无效的字符. 如图: 意思是webservice返回的信息中包含无效的字符,无法解析成 ...
- 解析PPTX 遇到异常:“\b”(十六进制值 0x08)是无效的字符。
问题描述: 通过DocumentFormat.OpenXml解析PPTX文件时遇到异常:"\b"(十六进制值 0x08)是无效的字符,查看文件发现存在乱码,乱码的十六进制值刚好时异 ...
- “\u0001”(十六进制值 0x01)是无效的字符
用XDocument解析XML时个别文件报字符无效错误. 有种思路是替换无效的字符. 最简单的方法当然是忽略无效字符,具体操作如下 XDocument xDocument = null; XmlRea ...
- {在头值中找到无效的字符。} 发email的时候 遇到这个问题 老师解决
- java实型常量用十六进制表示_[Java入门笔记] Java语言基础(二):常量、变量与数据类型...
常量与变量 什么是常量和变量 常量与变量都是程序在运行时用来存储数据一块内存空间 常量: 常量的值在程序运行时不能被改变,Java中声明常量必须使用final关键字.常量还可以分为两种意思: 第1种意 ...
- JAVA十进制与十六进制相互转换
JAVA十进制与十六进制相互转换 十进制转十六进制 String.format("%08x", 645741568); 十六进制转十进制 Long.parseLong(" ...
- java中带符号十六进制转换成十进制详解
java中带符号十六进制转换成十进制详解 代码如下 代码如下 必须拿ffff进行测试,否则测不出异同 public void test1(){String strHex="ffff" ...
最新文章
- get占位符传多个参数_未知环境下的Lidar概率占位栅格图(Occupancy Grid Map) Python代码实现...
- android 自定义天气特效,《Android自定义控件》WindMillView,仿华为天气风车效果
- Sencha Architect 安装与使用
- 螺旋矩阵Python解法
- oracle中sql行数的计算,Oracle技术网—如何利用DBMS_SQL包和游标计算当前用户下所有表的行数...
- 这些新技术你们都知道吗?成功收获美团,小米安卓offer
- Neither BindingResult nor plain target object for bean name 'xxx' availabl问题解决
- u-boot2010.06移植阶段三--norflash驱动
- 精简的Linux启动过程
- Property Bags Object Model中的小“陷阱”
- window7安装虚拟机上网
- 谷歌地球(google earth)中文专业版官方下载
- java实现图片合成功能,两张图片合成一张
- python绘制国际象棋规则口诀_国际象棋摆棋口诀
- 7.sqli-labs-Less7
- Java中存储金额用什么数据类型?
- html文本怎么打印出来,如何把一个html文件直接打印出来(200分)
- matlab画图总结——二维图plot函数、图形标注和坐标轴控制、饼图、条形图、排列图;三维图的绘制
- linux-vimdiff,diff,patch,cmp:文件比较
- Word标题设置快捷键