1

我从谷歌http://translate.google.com/translate_a/t?client=t&hl=en&sl=auto&tl=fa&multires=1&prev=btn&ssel=0&tsel=3&uptl=fa&alttl=en&sc=1&text=hello获得以下链接,其中包含一些波斯语字母,所以我想用以下代码将它保存到 mysql 数据库中:


pageurl = new URL("http://translate.google.com/translate_a/t?client=t&hl=en&sl=auto&tl=fa&multires=1&prev=btn&ssel=0&tsel=3&uptl=fa&alttl=en&sc=1&text=of");
t = pageurl.openConnection();
t.setRequestProperty("User-Agent", "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.4; en-US; rv:1.9.2.2) Gecko/20100316 Firefox/3.6.2");

in = new BufferedReader(new InputStreamReader(t.getInputStream()));
preparedStatement2 = con.prepareStatement("update `en_db` set `meaning` = ? where `id` = ?");
preparedStatement2.setString(1, in.readLine());
preparedStatement2.setInt(2, id);
preparedStatement2.executeUpdate();
in.close();

但它会在数据库中保存一些错误的东西,比如

通过","per","of","with"]]]]],"en",,[["??",[5],0,0,1000,0,1,0]], [["of",4,,,""],["of",5,[["??",1000,0,0],["?? ??",0,0,0],["??????? ??",0,0,0],["?? ??",0,0,0]],[[0,2]],"of"]],,,,6]
如果我打印System.out.println它会显示
[[["از","of","",""]],[["介词",["از","از لحاظ","از طرف","در باره","در جهت", "ز","از مبدا","از منشا","در سوی","بوسیله"],[["از",["of","from","in","by"]],[ "از لحاظ",["of"]],["از طرف",["代表","of","for"]],["در باره",["about","on", "关于","of","toward","in re"]],["در جهت",["of","with"]],["ز",["of"]],[" از مبدا",["of"]],["از منشا",["of"]],["در سوی",["of"]],["بوسیله",["by","通过","per","of","with"]]]]],"en",,[["از",[5],0,0,1000,0,1,0]],[ ["of",4,,,""],["of",5,[["از",1000,0,0],["ای از",0,0,0],["استفاده از ",0,0,0],["را از",0,0,0]],[[0,2]],"of"]],,,,16]
我该如何解决?

4

3 回答 3

1

所有其他答案,并且:您的数据库连接 URL 应该类似于:

jdbc:mysql://localhost/mydatabase?useUnicode=true&characterEncoding=UTF-8

这可确保驱动程序也以 UTF-8 进行通信。

重要的

in = new BufferedReader(new InputStreamReader(t.getInputStream(), "UTF-8"));

我在 Stack Overflow 对 google Translate 的回答中看到,标头提供了一种语言来接收正确的编码,但一切都已经好了。

于 2012-06-04T11:34:08.297 回答
0

您的表字段是使用不支持波斯字符的字符集定义的(很可能是Latin1

您需要将它们转换为支持它们的字符集:

ALTER TABLE en_db MODIFY meaning VARCHAR(100) CHARACTER SET UTF8;

(分别针对每个字段),或

ALTER TABLE en_db CONVERT TO CHARACTER SET UTF8;

(适用于所有领域)。

于 2012-06-04T11:24:36.377 回答
0

检查您的 MySql DB 是如何配置的。

看看下面的文章:http ://dev.mysql.com/doc/refman/5.0/en/charset-unicode.html

编码可以全局配置(每个 DB)或每个表:

CREATE TABLE `mytable` (
.................
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
于 2012-06-04T11:27:03.520 回答