代码中有一个功能需要将从其他模块返回值中读取的字符串转化为int值(例如:字符串"12345"转化为int值12345,试用java Integer.parseInt()函数即可),但是在程序测试中出现异常
java.lang.NumberFormatException: For input string: "118158"
at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48)
将获得字符串输出出来发现是"118158",但是程序就是输出异常。于是分析了下可能出现的问题。1.字符串两端有空格。2.字符串编码问题。针对问题1在转换前进行trim操作,测试后问题依旧。针对问题2用utf-8编码重新编码字符串,测试后问题依旧。奇怪之余最后想见识见识这个传入的字符串到底是何方神圣!!用"118158"同得到的字符串用equals()做了下对比发现结果为false,但是输出的结果在肉眼看来是一模一样的。将String转换为char[],然后输出unicode编码后发现其中有一个字符的编码为65279,于是定位问题就是编码为65279的问题了。Google过65279后发现这个字符是
Byte order mark。
unicode编码为65279的字符叫“ZERO WIDTH NO-BREAK SPACE”即没有宽度的空格符,本质上也是null值,但是不同于null。byte-order mark(BOM)是位于码点U+FEFF的统一码字符的名称。当以UTF-16或UTF-32来将UCS/统一码字符所组成的字符串编码时,这个字符被用来标示其字节序。它常被用来当做标示文件是以UTF-8、UTF-16或UTF-32编码的记号。
说白了就是位于文本最前面用来标识该unicode编码的文本内容是以UTF-8、UTF-16或UTF-32编码的。
通过查询发现windows的记事本程序在打开文本内容后会自动添加BOM,我怀疑是那个模块在编码的时候用记事本编辑过代码,然后在模板或其他可能的文件中添加了BOM。
解决方法:判断字符串第一位的unicode编码值是否是65279,如果是则处理完再转换为int,否则直接转换。
分享到:
相关推荐
零宽度库是一个用于处理零宽度字符(ZWC)的库,这些字符是非打印字符和不可见字符。 ZWC的常用用法包括对机密文本进行指纹识别,嵌入隐藏文本并从字符串匹配(即正则表达式)中转义... lib受到这篇出色的启发,并...
在处理网页内容时,有时我们需要将HTML中的Unicode字符串转换为UTF-8编码。下面将详细阐述这个过程以及相关的知识点。 Unicode是一种国际标准,它为世界上几乎所有的字符提供了一个唯一的数字表示,称为码点。...
- **Unicode 8.0 新增字符**:http://www.unicode.org/charts/PDF/Unicode-8.0/展示了仅在Unicode 8.0中添加的新字符。 - **完整文档**:在线查看Unicode 8.0的完整文档,网址为...
- JavaScript提供了多种处理字符串的方法,如`length`属性、`charAt()`、`slice()`等,它们在Unicode环境中也有效。需要注意的是,由于一个Unicode字符可能由多个码点组成,`length`属性可能不会按预期计算非ASCII...
在开发中,它可以帮助程序员理解和处理字符串中的特殊字符;对于语言学家或文字爱好者,它则提供了一个探索世界文字的窗口。 在实际使用中,用户可以根据自身需求选择桌面应用、在线工具或移动应用版本的Unicode...
在编程领域,尤其是在C语言中,处理字符串时经常会遇到字符编码的问题。ANSI、Unicode和UTF-8是三种常见的字符编码格式,它们各有特点并适用于不同的场景。了解这些编码之间的转换对于开发跨平台的软件至关重要。 1...
字符编码是计算机处理文本的基础,它定义了如何将字符转换为二进制数据,以便计算机存储、处理和传输。在IT行业中,理解不同字符编码体系的重要性不言而喻,特别是Unicode、GBK和UTF-8这三种编码方式。下面将详细...
在IT行业中,字符串和Unicode编码是编程中非常重要的概念,特别是在处理多语言或者跨平台的软件开发时。本文将深入探讨“字符串与Unicode互转工具”所涉及的关键知识点,包括字符串的基本概念、Unicode编码体系以及...
在这个名为“Unicode字符处理特级”的项目中,显然开发者面临的问题是与繁体字操作系统的交互,因为繁体字在GB编码(国标码)中可能会显示为乱码。GB编码是中国大陆广泛使用的字符集,主要覆盖简体中文字符,对繁体...
当我们在不同的字符集之间进行转换时,尤其是从GBK到Unicode或反之亦者,经常会遇到乱码的问题。这主要是由于字符编码不匹配造成的。 - **编码不一致**:如果一个程序或系统默认使用GBK编码,而输入的数据却是...
标题中的“arial-unicode-ms-regular.zip”是一个压缩文件,其中包含了Arial Unicode MS Regular字体的离线版本。Arial Unicode MS是一种广泛使用的TrueType字体,由Monotype公司设计,旨在支持大量的Unicode字符集...
在编程领域,字符编码是处理文本数据的关键环节。C语言虽然相对较旧,但它仍然被广泛用于系统级编程和底层开发,包括字符编码的转换。在这个主题中,我们将深入探讨如何在C语言中进行UNICODE、GBK和UTF-8之间的转换...
Unicode是一个字符集,提供了一个通用的字符编码方案,能够表示世界上所有语言中的所有字符。Unicode使用双字节表示每个字符,即每个字符占用两个字节的存储空间。 UTF-8 UTF-8是Unicode的一种实现方式,也是一种...
总结,这个示例展示了如何在Java中处理Unicode和十六进制字符串的转换,强调了理解字符编码格式和处理过程的重要性。在实际开发中,正确处理字符编码可以避免乱码问题,确保数据的准确性和一致性。同时,开发者应该...
unicode -> utf-8 utf-8 -> unicode 国际化必备工具
Unicode的出现解决了计算机系统中字符编码不一致的问题,极大地方便了国际间的文本交流和数据交换。Unicode的实现有多种,如UTF-8、UTF-16和UTF-32,它们定义了如何将Unicode字符编码为字节序列,以便计算机存储和...
在计算机科学中,字符编码是用于表示文本的一种方式,特别是在计算机系统中。UNICODE和UTF-8是两种广泛使用的字符编码标准,它们各自有着独特的特性和应用场景。本文将深入探讨UNICODE与UTF-8之间的关系、区别以及...
在计算机编程中,经常需要对文本中的字符进行处理和判断。例如,在处理用户输入或分析文档时,可能需要识别哪些字符是中文字符。本篇文章将详细介绍如何通过检查字符的Unicode编码来判断一个字符是否属于中文字符,...
在Qt开发中,字符编码转换是一项关键任务,尤其是在处理跨平台和多语言支持时。本文主要探讨了在Qt中如何进行UTF8、Unicode、GBK、ASCII、16进制字符和16进制数值之间的转换。 首先,让我们简单回顾一下各种编码...
Unicode字符集是一种编码标准,旨在统一全球各种语言的文字表示,以解决不同地区和语言之间的文本数据交换问题。在软件开发中,尤其是涉及到多语言支持时,Unicode是至关重要的。宽字节字符集(如DBCS,Double Byte ...