java - 在 Java 中使用 RandomAccessFile 编写非英文字符

标签 java character-encoding randomaccessfile

我正在尝试使用 RandomAccessFile 对象将一些文本写入文件,但未正确保存非英语字符。

具体来说,这句话 --> "und NotenstEnder Libero"

这样保存 --> "und Notenst•nder Libero"

其中“E”字符不是英文(我认为 ascii 码是 917)。

我使用的代码是这样的:

file = new RandomAccessFile(path, "rw");
...
file.seek(file.length());
file.writeBytes("The data i want");

我怎样才能避免这种情况并写出正确的文本?

(PS:我知道file.writeChars,我想知道是否有其他方法!)

最佳答案

主要问题可能是您的文件编码。您应该使用正确的编码(可能是 UTF-8),例如:

byte[] b = "The data i want".getBytes("UTF-8");
file.write(b);

请注意,如果您使用文本查看器/编辑器来检查文件,根据您使用的是哪个,您可能必须在文件开头写一个 UTF-8 字节顺序标记或告诉查看器/editor 如果它自己无法识别,则使用 UTF-8。

关于java - 在 Java 中使用 RandomAccessFile 编写非英文字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22304440/

相关文章:

java - http post 响应给出了之前的结果

unicode - HTML Agility Pack 的编码错误

powershell - Powershell,无法输入带有某些非ASCII字符的哈希表键(在脚本中)

java - 写入字节 block 后文件更改权限

java - 使用 RandomAccessFile 在 Java 中清除文件内容

java - 如何使用离线签名和 OCSP 响应创建 PADES

java - 如何在Java中将 "user_id"转换为 "userId"?

php - MySQL存储特殊字符(Android、PHP也有涉及)

java - 如何使用RandomAccessFile恢复中断下载?

java - 不能画线(方法: paintComponent) - Java