莫名其妙的异常003:“.”(十六进制值 0x00)是无效的字符

读取一个第三方的接口,返回的字符串在页面显示时总是提示:
“.”(十六进制值 0x00)是无效的字符。
这种错误一般大家也知道是因为有特殊字符的原因,无非就是讲特殊字符替换掉,或者转换为当前环境可以正常显示的。
1、将特殊字符找出来替换掉
如果这些内容中总是那几个特殊字符,可以将这些字符整理出来,统一替换掉正常的字符。

string sourceString = "特殊字符";
string destString = sourceString.Replace("特殊字符","普通字符");

2、转码
对于特殊字符较多的,难以收集的可以直接进行编码转换然后输出。这个结果会造成特殊字符丢失,因为一旦编码不识别就显示?了。
这种情况适用于,对特殊字符不要求显示的情形。
例如,

string ss1 = "高中?";

byte[] byteArray = System.Text.Encoding.GetEncoding("gb2312").GetBytes(ss1);

var sw = ToCommonString(byteArray, System.Text.Encoding.GetEncoding("gb2312"));

private static string ToCommonString(byte[] bytes, Encoding encode)
{
            string commonString = string.Empty;
            if (bytes != null)
            {
                int len = bytes.Length;
                for (int i = 0; i < len; i++)
                {
                    if (bytes[i] == 0) bytes[i] = 46;
                }
                commonString = encode.GetString(bytes);
            }
            return commonString;
}

原文地址:http://blog.51cto.com/yangyoushan/2141093

时间: 2024-08-24 16:31:56

莫名其妙的异常003:“.”(十六进制值 0x00)是无效的字符的相关文章

Android基础知识颜色的不透明度和RGB颜色十六进制值

Android中的颜色使用形式为"#FFBFBFCC"(html)和0xFF777777(代码).颜色用8位十六进制数数来表示,前2位表示Alpha 分量(遮光度或者叫不透明度),剩下的6位是R.G.B的分量,两两一组形成指定的颜色,颜色中字母不区分大小写. 2位不透明度值,FF表示完全不透明,00表示完全透明,所以不透明度在00~FF之间,也就是在0~255之间.所以如果你需要60%的不透明度时,可以255*60% = 153,把153转化为十六进制就是99,那么最前面2位就是99了

MySql_十六进制值

十六进制值 MySQL支持十六进制值.在数字上下文中,十六进制数如同整数(64位精度).在字符串上下文,如同二进制字符串,每对十六进制数字被转换为一个字符: mysql> SELECT x'4D7953514C': -> 'MySQL' mysql> SELECT 0xa+0: -> 10 mysql> SELECT 0x5061756c: -> 'Paul' 十六进制值的默认类型是字符串.如果想要确保该值作为数字处理,可以使用CAST(...AS UNSIGNED):

UIColor值和颜色的十六进制值(hex值)的互相转换

UIColor值是由4个0~1的值组成(Red,Green,Blue和Alpha值),而颜色的十六进制值(hex值)是一个十六进制数.这份代码是这两个值直接的互相转换. + (UIColor*) colorWithHex:(NSInteger)hexValue alpha:(CGFloat)alphaValue { return [UIColor colorWithRed:((float)((hexValue & 0xFF0000) >> 16))/255.0 green:((floa

atitit.架构设计---方法调用结果使用异常还是返回值

atitit.架构设计---方法调用结果使用异常还是返回值 1. 应该返回BOOL类型还是异常 1 2. 最终会有四种状况,抛出异常.返回特殊值.阻塞.超时 1 3. 异常的优缺点点 1 4. java BlockingQueue的提示 2 5. 方案::两个都使用,一个api返回bool,一个throw 异常... 2 1. 应该返回BOOL类型还是异常 现在我遇到一个问题,我有一个函数,它要实现的功能是启动一个线程,然后让此线程监视一个事件. 但我应该返回BOOL类型还是异常哪? 作者:: 

CSS 颜色十六进制值

CSS 颜色十六进制值 CSS 颜色名 CSS 参考手册 根据十六进制值排序 所有浏览器都支持的颜色名 根据颜色名排序的相同列表 颜色名 十六进制颜色值 颜色 Black #000000   Navy #000080   DarkBlue #00008B   MediumBlue #0000CD   Blue #0000FF   DarkGreen #006400   Green #008000   Teal #008080   DarkCyan #008B8B   DeepSkyBlue #0

判断JSON返回的对象中的firstName这一列的值是否包含指定的字符

判断JSON返回的对象中的firstName这一列的值是否包含指定的字符,如果包含指定字符则返回true,否则返回false 标签: <无> 代码片段(1)[全屏查看所有代码] 1. [代码][其他]代码 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51

java字符串转换数值类型出现异常赋予默认值

http://blog.csdn.net/w47_csdn/article/details/77855126 可以自定义工具方法,例如: public static int parseInt(String s, int defaultValue) { if (s == null) return defaultValue; try { return Integer.parseInt(s); } catch (NumberFormatException x) { return defaultValu

CMP R0,#0 指令,看看对应的十六进制值和so中的值是否对应

但是到这里,我们已经可以确认一件事就是so中的解密函数逻辑有一层防护就是判断当前调用so的应用包名是否为正确的视频包名,如果不是就不走正确的解密逻辑了.所以这里我们需要修改一下so指令,让这个判断无效.修改指令其实很简单,我们看到他通过判断strstr函数返回的NULL值,也就是对应 CMP R0,#0 指令值,然后后面有一个BEQ跳转指令,这里我们可以这么改,他不是和0判断吗?其实0就是NULL值,我们把他改成和1比较,这样strstr函数返回了NULL值也就是0,和1比较不相等.那就正确的逻

移动端(html5)微信公众号下用keyup实时监控input值的变化无效

搜索框依据用户输入的值实时检索,一开始自然而然想到keyup,在拼音状态时,啥问题也没有, 问题1:切换到中文输入法,问题出来了,keyup事件不灵便了,后来在网上搜了下,找到了思路, 问题2:微信公众平台开发时,客户提需求“输入框中输入内容时,输入框后边显示清除按钮,清除输入框中的内容”,使用“keyup”事件时在中文输入法下部分按键keyup事件无效, 方法一:主要是给搜索框注册focus事件,隔个时间去检索下,贴出代码 <script language="javascript&quo