将阿拉伯语存储在String中并使用Java将其插入数据库

时间:2017-09-04 00:38:09

标签: java string arabic

我正在尝试将阿拉伯字符串传递给函数,将其存储到数据库中,但字符串的字符转换为'?'

例如

String str = new String();
str = "عشب";
System.out.print(str);

输出将是:

"???"

并将其存储在数据库中。

如果我直接插入数据库,它运作良好。

enter image description here

4 个答案:

答案 0 :(得分:1)

确保您的字符编码为utf-8。

您展示的代码段完全符合预期。

例如,如果您使用Windows-1252对源文件进行编码,则无法正常工作。

答案 1 :(得分:0)

问题是System.out.println是PrintWriter,它使用默认编码将阿拉伯字符串转换为字节;大概无法处理阿拉伯字符。尝试

System.out.write(str.getBytes("UTF-8"));
System.out.println();

答案 2 :(得分:0)

许多现代操作系统使用UTF-8作为默认编码,它将正确支持非拉丁字符。 Windows不是其中之一,ANSI是西方安装的默认设置(我最近没有使用过Windows,所以可能已经改变了)。无论哪种方式,您都应该强制Java进程的默认字符编码,而不管平台。

如另一个Stackoverflow问题(请参阅Setting the default Java character encoding?)中所述,对于Java进程,您需要更改默认值,如下所示:

java -Dfile.encoding=UTF-8

此外,由于您在IDE中运行,您可能需要告诉它在指示的字符集中显示输出或存在损坏风险,尽管这是特定于IDE的,具体说明取决于您的IDE。

另一件事是,如果您正在阅读或编写文本文件,那么您应该始终指定预期的字符编码,否则您将冒险回到平台默认值。

答案 3 :(得分:0)

您需要为此设置字符集utf-8。

在java级别你可以这样做:

Charset.forName("UTF-8").encode(myString);

如果你想在IDE级别这样做,那么你可以这样做:

窗口>偏好>一般>内容类型,将UTF-8设置为所有内容类型的默认编码