ASCII码对应表
计算机都是用二进制表示的,但是这种表示方法让人理解很困难。因此人们编制了统一的信息交换代码,也就是ASCII码表,它的全称是“美国信息交换标准代码”。
1.ASCII码总览表
2.可见字符之ASCII码表
可见字符是指在计算机中可以直接显示在屏幕或其他输出设备上的字符,包括英文字母、数字、标点符号等。在ASCII码表中,可见字符的范围是从空格(32)到波浪号(126),共95个。
3.不可见字符
不可见字符是指在屏幕上无法显示的字符,通常包括空格、制表符、换行符等。这些字符虽然在文本中存在,但在视觉上无法直接看到,因此被称为不可见字符。
不可见字符的常见类型
- 空格(Space):用于在文本中创建空白区域。
- 制表符(Tab):用于在文本中创建水平制表位,通常用于对齐文本。
- 换行符(Newline):用于在文本中创建新行。
- 回车符(Carriage Return):用于在文本中创建回车,通常与换行符一起使用。
- 零宽度空格
(Zero Width Space):这种空格在视觉上不可见,但占用一个字符的位置。
4.编程中实际问题:
有时候会遇到数据库中的属性,用 ‘=’ 查询不出来,用 like查询可以,使用update却又不能更新,这种情况就是遇到了不可见字符。
解决方法:
# 查询结果为空,表里确实显示 ‘douzi’
select * from user where name = 'douzi';
# 使用模糊查询,可以出现数据行
select * from user where name like '%douzi%';
# 尝试使用 trim函数查询,也可以出现,表示 值里含有 不可见空格
select * from user where trim(name) = 'douzi';
# 更新属性无效,表示里边有不可见字符,mysql认不出
update user set name = trim(name);# 欺骗mysql,先修改一个值,在改回来
update user set name = concat(trim(name), ' ');
update user set name = trim(name);
再次用 ‘=’ 查询就出来了。
5.编程中如何使用不可见字符,坑队友呢?
在Java中,如果你想使用控制字符(例如DC4),你可以通过多种方式来实现。DC4是一个控制字符,其ASCII码为20(十六进制0x14)。在文本中直接插入这个字符通常用于特定的控制目的,比如在打印机控制语言(PCL)中或者在特定的终端控制序列中使用。
方法1:使用ASCII码
你可以直接使用DC4的ASCII码值(20或0x14)来发送这个字符。在Java中,你可以通过强制类型转换来得到这个字符:
char dc4Char = (char) 20; // 或者使用 (char) 0x14
System.out.println(dc4Char);
方法2:使用转义序列
在某些情况下,你可能需要在字符串中使用DC4字符。在Java字符串中,你可以通过\u
后跟4位十六进制数的方式来插入Unicode字符:
String dc4String = "\u0014";
System.out.println(dc4String);
方法3:写入文件或网络流
如果你需要将DC4字符写入文件或通过网络发送,你可以使用字节流而不是字符流。这是因为DC4通常用于底层通信协议,如通过网络发送控制命令:
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;public class Main {public static void main(String[] args) {try (OutputStream os = new FileOutputStream("output.txt")) {byte[] dc4Bytes = new byte[] { 20 }; // 或者使用 { 0x14 }os.write(dc4Bytes);} catch (IOException e) {e.printStackTrace();}}
}
方法4:在终端或打印机控制序列中使用
如果你在使用DC4来控制打印机或其他设备,你可能需要按照设备的特定协议构造控制序列。例如,在PCL中,DC4可以用于特定的功能:
// 示例:向打印机发送一个带有DC4的控制序列(这取决于你的打印机如何解释DC4)
byte[] controlSequence = new byte[] { 0x1B, '*', 'r', 0x14, '1', '2', '3' }; // ESC * r DC4 1 2 3
try (OutputStream os = new FileOutputStream("printer_control_sequence.pcl")) {os.write(controlSequence);
} catch (IOException e) {e.printStackTrace();
}
在这些例子中,你需要根据你要控制的设备或系统的具体要求来调整使用DC4的方式。每种方法都适用于不同的场景,例如直接打印、文件写入或网络通信。确保你理解你的目标设备和系统是如何解释和使用这些控制字符的。