- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
已解决,接受下面的答案,因为它指出我检查我的文件是如何损坏的。请阅读此问题的结尾以了解 Maven 的原因。
我创建了一个包含字节 0xA8
的 1 字节文件。我正在尝试将其读入任何 Java 结构中,以便我以后可以使用它。我知道 java 中的字节是有符号的,因此从 0x80
到 0xFF
的任何值都将被解释为负值。
import java.io.DataInputStream;
import java.io.EOFException;
import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
public class Test {
public static void main(final String[] args) throws IOException {
// 0xA8.hex contains one byte 0xA8.
final File inputFile = new File(Test.class.getClassLoader().getResource("0xA8.hex").getPath());
final FileInputStream fin = new FileInputStream(inputFile);
final DataInputStream dis = new DataInputStream(fin);
int read = dis.readUnsignedByte();
System.out.println(read + ", hex: " + Integer.toHexString(read));
while (true) {
try {
read = dis.readUnsignedByte();
System.out.println("read more: " + read + ", hex: " + Integer.toHexString(read));
} catch (final EOFException ignored) {
break;
}
}
}
}
我可能缺少一些非常简单的东西,但我无法理解它。上面的程序输出:
239, hex: ef
read more: 191, hex: bf
read more: 189, hex: bd
0xA8.hex
文件是我使用十六进制编辑器自己创建的 1 字节文件。它的内容实际上是一个字节:
drvdijk@macmine:~/$ hexdump 0xA8.hex
0000000 a8
0000001
为什么,以及如何让它只读取一个(可能转换为无符号)字节?
我使用 Maven,并且在 pom.xml
中我有一个部分:
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
</resource>
</resources>
<!-- ... -->
</build>
我使用的 0xA8.hex
文件被 Maven 过滤,在我的 0xA8
原来的位置输入替换字符 (0xEF 0xBF 0xBD)。我现在将 pom.xml
更新为以下内容:
<build>
<resources>
<resource>
<directory>src/main/resources</directory>
<filtering>true</filtering>
<excludes>
<exclude>**/*.hex</exclude>
</excludes>
</resource>
<resource>
<directory>src/main/resources</directory>
<filtering>false</filtering>
<includes>
<include>**/*.hex</include>
</includes>
</resource>
</resources>
<!-- ... -->
</build>
最佳答案
您的文件似乎有替换字符 http://www.utf8-chartable.de/unicode-utf8-table.pl?start=65280&utf8=dec
U+FFFD � 239 191 189 REPLACEMENT CHARACTER
不是0xA8
,我确实使用以下代码创建了一个简单的文件
File f = new File("0xA8.hex");
FileOutputStream stream = new FileOutputStream(f);
stream.write(0xA8);
stream.flush();
stream.close();
注意**仅供演示
并使用您的程序读取它正在正常工作。找出文件是如何损坏的。
关于java - 从一字节文件读取返回 0xEF 0xBF 0xBD,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23768328/
我正在使用 LXML 从网页上抓取一些文本。一些文本包括分数。 5½ 我需要将其转换为浮点格式。这些失败了: ugly_fraction.encode('utf-8') #doesn't chang
我正在尝试合并一个具有 4 个属性(ID、FIRSTNAME、LASTNAME、SCORE)的对象,使用 JPA 作为 ORM,使用 MySQL 作为 RDBMS,我只更新特定 ID 的分数并得到以下
我有一张表需要处理各种字符。字符包括Ø、®等。 我已将我的表设置为 utf-8 作为默认排序规则,所有列都使用表默认值,但是当我尝试插入这些字符时出现错误:不正确的字符串值:列 '\xEF\xBF\x
我有一张表需要处理各种字符。字符包括Ø、®等。 我已将我的表设置为 utf-8 作为默认排序规则,所有列都使用表默认值,但是当我尝试插入这些字符时出现错误:不正确的字符串值:列 '\xEF\xBF\x
我有一张表需要处理各种字符。字符包括Ø、®等。 我已将我的表设置为 utf-8 作为默认排序规则,所有列都使用表默认值,但是当我尝试插入这些字符时出现错误:不正确的字符串值:列 '\xEF\xBF\x
这是 Go blog 中的练习。 [练习:将无效的 UTF-8 字节序列放入字符串中。 (如何?)循环的迭代会发生什么?] 我所做的是 const nihongo = "\xbd日本語\xbd
我有以下字符串值:“walmart obama 👽💔” 我正在使用 MySQL 和 Java。 我收到以下异常:`java.sql.SQLException:错误的字符串值:'\xF0\x9F\x
我有以下字符串值:“walmart obama 👽💔” 我正在使用 MySQL 和 Java。 我收到以下异常:`java.sql.SQLException: Incorrect string v
我有以下字符串值:“walmart obama 👽💔” 我正在使用 MySQL 和 Java。 我收到以下异常:`java.sql.SQLException:不正确的字符串值:'\xF0\x9F\
我是一名优秀的程序员,十分优秀!