CharsetMatch match = detector.setText(inputStream).detect() 报错 mark/reset not supported
时间: 2023-01-11 08:55:36 浏览: 97
"mark/reset not supported" 通常是指输入流不支持 mark() 和 reset() 操作。这两个方法是用来标记输入流中的当前位置,以便在需要时可以通过调用 reset() 方法恢复到标记位置。如果输入流不支持这两个方法,那么在调用它们时就会抛出异常。
在这种情况下,可以尝试使用其他的输入流,看看是否支持 mark() 和 reset() 操作。或者,也可以尝试使用其他的方式来处理输入流,而不是依赖于 mark() 和 reset() 操作。
相关问题
CharsetDetector cd = new CharsetDetector();InputStream is = new BufferedInputStream(new FileInputStream(file));cd = setTest(is);CharsetMatch[] csArray = cd.deleteAll(); CharsetMatch cs = scArray[0];cs.getConfigure()和sc.getName()结果是啥
根据给出的代码,`cs.getConfigure()` 和 `cs.getName()` 是用于获取字符编码匹配结果的相关信息。
`cs.getConfigure()` 是用于获取字符编码匹配结果的配置信息。这可能包括一些关于字符编码检测的设置,如最小可靠度、语言模型等。返回的结果可能会根据具体实现而有所不同。
`cs.getName()` 是用于获取字符编码的名称。它返回一个字符串,表示字符编码的名称,例如 "UTF-8"、"ISO-8859-1" 等。
请注意,具体的返回结果会根据具体的实现和文件的内容而有所不同。
java如何得知一个byte数组是什么编码格式
在Java中,不能直接判断一个byte数组的编码格式。因为byte数组本身只是一组二进制数据,没有编码信息。
但是可以通过一些方法来判断byte数组的编码格式,例如:
1. 根据特定的编码格式将byte数组转换为String类型,如果转换成功,说明该byte数组使用的是对应的编码格式;否则转换失败,说明使用的不是该编码格式。
```java
byte[] bytes = ...; // 待判断的byte数组
String str = new String(bytes, "UTF-8"); // 将byte数组转换为String类型
```
2. 使用第三方库,例如juniversalchardet,它可以根据byte数组的内容自动识别编码格式。
```java
byte[] bytes = ...; // 待判断的byte数组
CharsetDetector detector = new CharsetDetector();
detector.setText(bytes);
CharsetMatch match = detector.detect();
String encoding = match.getName(); // 获取编码格式
```
需要注意的是,第二种方法虽然可以自动识别编码格式,但是可能会存在识别错误的情况。因此,最好还是使用第一种方法来判断byte数组的编码格式。