FileOutputStream 上传中文乱码
时间: 2023-10-25 12:23:32 浏览: 70
在使用 `FileOutputStream` 上传中文文件时,可能会出现乱码的情况,这可能是因为在进行文件输入输出时,没有指定字符编码。
解决方案是在 `FileOutputStream` 构造函数中指定字符编码,例如:
```java
FileOutputStream fos = new FileOutputStream(file, false);
OutputStreamWriter osw = new OutputStreamWriter(fos, "UTF-8");
```
这样就可以指定文件的字符编码为 UTF-8,避免中文乱码的情况。
相关问题
FileOutputStream 上传文件乱码
在使用 `FileOutputStream` 上传文件时,文件名出现乱码可能是因为在文件名中包含了非 ASCII 字符(如中文字符),而 `FileOutputStream` 默认使用的是系统默认编码,而不是 UTF-8 编码。因此,我们需要手动指定文件名编码为 UTF-8,才能避免出现乱码。
以下是一个示例代码:
```java
String fileName = "测试文件.txt";
byte[] fileContent = getFileContent(); // 获取文件内容
// 将文件名编码为 UTF-8
fileName = new String(fileName.getBytes("UTF-8"), "ISO8859-1");
// 创建文件输出流并上传文件
FileOutputStream fos = new FileOutputStream(new File(uploadDir, fileName));
fos.write(fileContent);
fos.flush();
fos.close();
```
在上面的代码中,我们先将文件名编码为 UTF-8,然后再使用 ISO8859-1 编码将其还原为字节数组,这样就能保证文件名在上传时不会出现乱码。
阅读全文