我有一个从java写入S3的json。 json有一个中文描述字段。 首先,我尝试将json写入普通文件并将其写入S3。但是汉字被破坏了。然后我尝试将json写入" UTF-8"所以使用了下面的代码
angular.module('app', [])
.controller('MyController', ['user', '$http', MyController]);
function MyController(user, $http) {
this.user = user;
this.$http = $http;
}
// Before switching to a new component, this hook runs for
// each active component in the app. If any of them
// return false, a rejected promise, or a promise that resolves to false,
// the navigation is cancelled.
MyController.prototype.canActivate = function() {
return this.user.isAdmin;
};
//This hook fires just before the nagivation finishes.
MyController.prototype.activate = function() {
return this.bigFiles = this.$http.downloadBigFiles();
};
当我尝试这个时,正确地将数据写入文件,我使用Notepad ++验证了该文件。但是当我把它写到S3时它再次被破坏了。更糟糕的是,当这样的事情发生时,如果文件已经存在,则该对象将从S3中删除。所以,问题是我必须使用java客户端将带有中文字符的文件写入S3,它应该存储为中文字符。任何帮助深表感谢。提前致谢
作为参考,这是json
Writer out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(f), "UTF8"));
byte[] bt = jsonData.toString().getBytes();
out.append(new String(bt));
out.flush();
out.close();
答案 0 :(得分:2)
你应该看看https://github.com/minio/mc。
我们支持开箱即用的unicode字符。
$ mc ls https://s3.amazonaws.com/miniocloud/本語.txt
[2015-10-02 10:56:37 PDT] 5.8KiB 本語.txt
' MC' Linux,OS X和Windows也支持。请在https://gitter.im/minio/minio向我们提供您的反馈和任何问题。
答案 1 :(得分:0)
我已经解决了这个问题。我做的是,我把json写成文件
File f = new File(fileName);
if (f.exists()) {
f.delete();
} else {
f.createNewFile();
}
Writer out = new BufferedWriter(new OutputStreamWriter(
new FileOutputStream(f), "UTF-8"));
byte[] bt = jsonData.toString().getBytes("UTF-8");
out.append(new String(bt));
out.flush();
out.close();
if (f.exists()) {
PutObjectResult res = s3rwclient
.putObject(new PutObjectRequest(bucket, key, f));
}
这解决了问题:)