教你用不同的编码标准解码字符 | 带你学《Java语言高级特性》之六十
上一篇:实战文件流,完成文件拷贝 | 带你学《Java语言高级特性》之五十九在Java开发过程中,有时会发现自己曾经的代码里汉字部分变成了奇形怪状的字符,这往往是由于字符的编码解码标准不统一引起的,本节将为读者介绍几种常用的编码标准。 【本节目标】通过阅读本节内容,你将了解到几种常见的编码标准与其表达能力,知道UTF-8是最常用的编码标准,并能够通过代码查看机器的属性,学会强制使用指定的编码标准....
《Java安全编码标准》一导读
前 言 在Java编程语言中,关键的安全编码要素是采用良好的文档和强制的编码规范。本书提供了在Java语言中的一系列安全编码规则。这些规则的目标是消除不安全的编码实践,因为这些不安全的因素会导致可利用的漏洞。如果应用这些安全编码标准,可以帮助设计出安全的、可靠的、健壮的、有弹性的、可用性和可维护性高的高质量系统,并且这些安全编码规范还可作为评估源代码质量特性的一个指标(不管使用的是手动的还是自动....
《Java安全编码标准》一3.3 DCL02-J将所有增强for语句的循环变量声明为final类型
3.3 DCL02-J将所有增强for语句的循环变量声明为final类型 Java 5平台(也因for-each风格出名)引入了增强的for语句,它用来对对象集合进行迭代。与基本的for语句不同,在基本的for语句中,给循环变量赋值是不能对循环的迭代次序有所影响。但在增强的for语句中,给循环变量赋值就可以有影响,而不是像程序员通常认为的那样。这使我们认识到应避免给在for循环中的循环变量赋值。....
《Java安全编码标准》一3.2 DCL01-J不要重用Java标准库的已经公开的标识
3.2 DCL01-J不要重用Java标准库的已经公开的标识 不要重用那些在Java标准库中已经使用过的公共的标识、公共的工具类、接口或者包。当一个程序员使用和公开类相同的名字时,如Vector对后来的维护者来说,他可能不知道这个标识并不是指?java.util.Vector?,并且可能会无意地使用这个自定义的Vector类而不是原有的java.util.Vector类。使得这个自定义的?Vec....
《Java安全编码标准》一3.1 DCL00-J防止类的循环初始化
3.1 DCL00-J防止类的循环初始化 在Java语言规范(Java Language Specification, JLS)第 12.4节“对类和接口的初始化”中提到[JLS 2005]:对类进行的初始化包括执行该类的static静态初始化方法和初始化该类中的静态数据成员(类变量)。换句话说,一个静态数据成员的出现会触发类的初始化。然而,一个静态数据成员可能会依赖于其他类的初始化,这样有可能....
《Java安全编码标准》一2.14 IDS13-J在文件或者网络I/O两端使用兼容的编码方式
2.14 IDS13-J在文件或者网络I/O两端使用兼容的编码方式 每一个Java平台都有自己默认的编码方式。“Supported Encodings”文档中列举了一些可能出现的编码方式[Encodings 2006]。在字符和一组字节序列之间进行编码转换时,需要通过字符编码方式指定转换细节。当没有显式指定编码方式时,会使用系统默认的编码方式完成这种转换。首先将字符转换为一个字节数组,然后将数组....
《Java安全编码标准》一2.13 IDS12-J在不同的字符编码中无损转换字符串数据
2.13 IDS12-J在不同的字符编码中无损转换字符串数据 在String对象之间进行转换时,如果涉及不同的编码类型,可能会导致数据丢失。根据Java API[API 2006] 对?String.getBytes(Charset)方法的描述:该方法总会替代那些错误格式的输入和不可映射的字符序列,把它们替换成这些字符的字节数组。当必须将一个String转化为字节数组时,例如写入一个文件,并且在....
《Java安全编码标准》一2.12 IDS11-J在验证前去掉非字符码点
2.12 IDS11-J在验证前去掉非字符码点 在早于Unicode 5.2的版本中,条款C7允许删除非字符码点。比如,在Unicode 5.1版本的C7条款中:条款C7 当一个进程声称不会修改一个合法编码字符序列的意思时,它不应该改变该字符编码序列,除了有可能使用标准化字符编码来取代字符序列,或是删除非字符编码之外。根据Unicode技术报告第36号的3.5节“删除非字符编码”,在考虑Unic....
《Java安全编码标准》一2.11 IDS10-J不要拆分两种数据结构中的字符串
2.11 IDS10-J不要拆分两种数据结构中的字符串 在历史遗留系统中,常常假设字符串中的每一个字符使用8位(一个字节,Java中的byte)。而Java语言使用16位表示一个字符(Java中的Char类型)。遗憾的是,不管是Java的byte类型还是char类型数据,都不能表示所有的Unicode字符。许多字符串使用例如UTF-8编码的方式存储和通信,而在这种编码中,字符长度是可变的。当Ja....
本页面内关键词为智能算法引擎基于机器学习所生成,如有任何问题,可在页面下方点击"联系我们"与我们沟通。
Java开发者
Java开发者成长课堂,课程资料学习,实战案例解析,Java工程师必备词汇等你来~
+关注