java中的char 占两个字节,默认使用UNICODE?转换成文件保存时,根据字符范围写入到文件中。
0开使的字符为asc码的128个字符,用1byte保存;x<=0X7F
110开始的字符用2byte保存;0X7F<x<0X8F
111开始的字符用3byte保存。x>0X8F
不多说,上一段hsqldb里的代码。
public static int stringToUTFBytes(String str,
HsqlByteArrayOutputStream out) {
int strlen = str.length();
int c,
count = 0;
if (out.count + strlen + 8 > out.buffer.length) {
out.ensureRoom(strlen + 8);
}
char[] arr = str.toCharArray();
for (int i = 0; i < strlen; i++) {
c = arr[i];
if (c >= 0x0001 && c <= 0x007F) {
out.buffer[out.count++] = (byte) c;
count++;
} else if (c > 0x07FF) {
out.buffer[out.count++] = (byte) (0xE0 | ((c >> 12) & 0x0F));
out.buffer[out.count++] = (byte) (0x80 | ((c >> 6) & 0x3F));
out.buffer[out.count++] = (byte) (0x80 | ((c >> 0) & 0x3F));
count += 3;
} else {
out.buffer[out.count++] = (byte) (0xC0 | ((c >> 6) & 0x1F));
out.buffer[out.count++] = (byte) (0x80 | ((c >> 0) & 0x3F));
count += 2;
}
if (out.count + 8 > out.buffer.length) {
out.ensureRoom(strlen - i + 8);
}
}
return count;
}
分享到:
相关推荐
7. **字符串处理**:JNI提供了处理Java字符串和本地字符串的函数,如`GetStringUTFChars`和`ReleaseStringUTFChars`用于获取和释放Java字符串的UTF-8表示。 8. **异常处理**:在本地方法中,可以通过`...
// JavaScript Escape and Unescape functions function escapeString(str) { return encodeURIComponent(str); } function unescapeString(str) { return decodeURIComponent(str); } ``` 这两个函数分别用于...
尽管现代编码如UTF-16允许使用多个`char`来表示一个汉字,但单个`char`本身不能直接存储一个完整的汉字。 - 其他选项:A正确,`char`确实占用2个字节;B正确,可以存储一个英文字母;D也正确,`char`类型的封装类...
FIXME How to judge UTF-8 and GBK, the * correct code should be: FileReader fr = new FileReader(new * InputStreamReader(fileName, "ENCODING")); Might let the user select the * encoding would be ...
7. **char存储中文**:char变量可以存储一个Unicode字符,所以理论上可以存储中文,但需注意编码问题,如使用UTF-8编码。 8. **效率计算2乘以8**:最有效率的方式是直接赋值`2 * 8`,无需复杂的计算过程。 9. **...
- char类型使用UTF-16编码,可以存储中文汉字,但不推荐用来进行数值运算。 - 效率最高的方法是直接使用乘法运算符,即2乘以8等于16。 - 设计一个计算器来计算一百亿需要考虑到整数溢出的问题,可以考虑使用字符...
7. **char存储中文字符**:char类型可以存储一个Unicode字符,因此理论上可以存储中文汉字,但实际编码时需要注意字符集(如UTF-8)。 8. **高效计算2的8次方**:使用移位运算符`2 可以高效地计算2乘以8的结果。 9...
return String.valueOf(c).getBytes("UTF-8").length > 1; } catch (UnsupportedEncodingException e) { e.printStackTrace(); return false; } } ``` 校验特殊字符 在 Java 中,可以使用以下方法来校验特殊...
if not (ord(char) >= 65 and ord(char) (char) >= 97 and ord(char) (char) >= 48 and ord(char) ): print(f"文件包含非英文字符:{char}") break check_english_chars('path_to_your_file') # 替换为实际文件...
byte[] charBytes = String.valueOf(c).getBytes(StandardCharsets.UTF_8); if (count + charBytes.length > byteLimit) break; sb.append(c); count += charBytes.length; } return sb.toString(); } } `...
byte[] charBytes = Character.toString(c).getBytes(StandardCharsets.UTF_8); if (totalBytes + charBytes.length > numBytes) { break; } sb.append(c); totalBytes += charBytes.length; } return sb....
在Android系统中,Emoji通常由Unicode字符集中的特定代码点表示,这些代码点在UTF-8或UTF-16编码下可以被识别和渲染为相应的图形。 二、添加Emoji支持 1. **字体设置**:为了确保TextView能够正确显示Emoji,可能...
2. CHAR(N):定长字符串,N 表示最大字节量,不足部分填充空格。 3. VARCHAR2(N):变长字符串,节省空间,存储实际输入的长度。 4. DATE:用于存储日期和时间,格式为 (DD-MON-RR)。 在设计数据库时,通常会在每个...
这个问题的关键在于处理中文字符,因为中文字符在UTF-8编码下通常占用3个字节,所以需要确保不会截断中文字符。示例代码如下: ```java public static String substringByBytes(String str, int num) { ...
Java支持多种编码方式,如GB2312、GBK、UTF-8等。 - 当读取文件时,如果不知道文件的编码格式,可能会导致乱码现象出现。 - `InputStreamReader`和`OutputStreamWriter`允许指定字符集编码。 3. **读取文件的不同...
- 数据类型:整型(int)、浮点型(float/double)、字符型(char)、布尔型(boolean)等。 - 变量声明与使用:变量命名规则、作用域等。 - 运算符:算术运算符、关系运算符、逻辑运算符等。 - 控制结构:if语句、...
1. **编码格式**:确保项目中的所有文件都使用UTF-8编码格式。 2. **国际化资源文件**:使用属性文件来存储不同语言的文本,例如`messages_zh_CN.properties`。 3. **编码转换**:在网络传输和文件读写时要注意编码...
- **Reader/Writer**:`read(char[])`/`write(char[])`。 - **InputStream/OutputStream**:`read(byte[])`/`write(byte[])`。 #### 31. 创建读取文件的对象 使用`FileInputStream`或`FileReader`等类创建读取文件...
select * from recordtest where userid='2011110531' and course='java'; --考试科目题型设计 select * from test_set where course='java'; --学生答题记录 select * from test where userid='2011110531' and ...