将Shift_JIS格式转换为UTF-8格式
Convert Shift_JIS format to UTF-8 format
我正在尝试将 Shift_JIS 格式的文件转换为 UTF-8 格式。为此,以下是我的方法:
- 读取Shift_JIS文件
- 获取每一行的字节数并将其转换为UTF-8
- 创建新文件并写入 UTF-8 转换值
问题是第 2 步没有发生转换。我正在使用以下代码将 Shift_JIS 转换为 UTF-8:
InputStream inputStream = getContentResolver().openInputStream(uri);
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
byte[] b = line.getBytes("Shift_JIS");
String value = new String(b, "UTF-8");
如果需要任何其他信息,请告诉我。
我有以下 2 个问题:
1.还有其他更好的方法(步骤)来进行这种转换吗?
2。为什么上面的代码片段不能用于转换?
提前致谢!!!
我终于找到了解决办法。犯了一些非常基本的错误。以下代码运行良好:
InputStream inputStream = getContentResolver().openInputStream(uri);
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream, "Shift_JIS"));
byte[] b = line.getBytes();
String value = new String(b, "UTF-8");
如果你想复制inFile(SHift_JIS)到outFile(UTF-8)。
try (Reader reader = new InputStreamReader(new FileInputStream(inFile), "Shift_JIS");
Writer writer = new OutputStreamWriter(new FileOutputStream(outFile), "UTF-8")) {
char[] buffer = new char[4096];
int size;
while ((size = reader.read(buffer)) >= 0)
writer.write(buffer, 0, size);
}
@VicJordan 发布的答案不正确。当您调用 getBytes()
时,您将获得字符串的原始字节 根据系统的本机字符编码 (可能是也可能不是 UTF-8)进行编码。然后,您将这些字节视为以 UTF-8 编码的字节,但它们可能不是。
更可靠的方法是将 Shift_JIS 文件读入 Java 字符串。然后,使用 UTF-8 编码写出 Java 字符串。
InputStream in = ...
Reader reader = new InputStreamReader(in, "Shift_JIS");
StringBuilder sb = new StringBuilder();
int read;
while ((read = reader.read()) != -1){
sb.append((char)read);
}
reader.close();
String string = sb.toString();
OutputStream out = ...
Writer writer = new OutputStreamWriter(out, "UTF-8");
writer.write(string);
writer.close();
我正在尝试将 Shift_JIS 格式的文件转换为 UTF-8 格式。为此,以下是我的方法:
- 读取Shift_JIS文件
- 获取每一行的字节数并将其转换为UTF-8
- 创建新文件并写入 UTF-8 转换值
问题是第 2 步没有发生转换。我正在使用以下代码将 Shift_JIS 转换为 UTF-8:
InputStream inputStream = getContentResolver().openInputStream(uri);
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
byte[] b = line.getBytes("Shift_JIS");
String value = new String(b, "UTF-8");
如果需要任何其他信息,请告诉我。
我有以下 2 个问题:
1.还有其他更好的方法(步骤)来进行这种转换吗?
2。为什么上面的代码片段不能用于转换?
提前致谢!!!
我终于找到了解决办法。犯了一些非常基本的错误。以下代码运行良好:
InputStream inputStream = getContentResolver().openInputStream(uri);
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream, "Shift_JIS"));
byte[] b = line.getBytes();
String value = new String(b, "UTF-8");
如果你想复制inFile(SHift_JIS)到outFile(UTF-8)。
try (Reader reader = new InputStreamReader(new FileInputStream(inFile), "Shift_JIS");
Writer writer = new OutputStreamWriter(new FileOutputStream(outFile), "UTF-8")) {
char[] buffer = new char[4096];
int size;
while ((size = reader.read(buffer)) >= 0)
writer.write(buffer, 0, size);
}
@VicJordan 发布的答案不正确。当您调用 getBytes()
时,您将获得字符串的原始字节 根据系统的本机字符编码 (可能是也可能不是 UTF-8)进行编码。然后,您将这些字节视为以 UTF-8 编码的字节,但它们可能不是。
更可靠的方法是将 Shift_JIS 文件读入 Java 字符串。然后,使用 UTF-8 编码写出 Java 字符串。
InputStream in = ...
Reader reader = new InputStreamReader(in, "Shift_JIS");
StringBuilder sb = new StringBuilder();
int read;
while ((read = reader.read()) != -1){
sb.append((char)read);
}
reader.close();
String string = sb.toString();
OutputStream out = ...
Writer writer = new OutputStreamWriter(out, "UTF-8");
writer.write(string);
writer.close();