繁体   English   中英

Java特殊字符编码问题

[英]Java Special character encoding issue

我试图通过Java将一些特殊字符插入到oracle表中,然后再次检索它-假设我的编码可以工作。 以下是我尝试过的代码。

  String s=new String("yesterday"+"\u2019"+"s");
  ...

  statement.executeUpdate("INSERT into test1 values ('"+s+"')");
  ResultSet rs=statement.executeQuery("select * from test1");
  while (rs.next()) {
      System.out.println(new String(rs.getString(1).getBytes("UTF-8"),"UTF-8"));
  }
  ...

现在,当我尝试通过命令行执行查看输出时,它始终显示特殊字符: yesterday’s

我的问题是:为什么即使使用编码后,它也没有显示预期的结果。 yesterday's 上面提到的代码不正确或需要进行一些修改?

PS:在eclipse中,代码可能会产生yesterday's结果,但是如果通过命令行执行,则会显示yesterday’s

我在用 :

-JDK1.6

-甲骨文:11.1.0.6.0

-NLS_Database_Parameters:NLS_CHARACTERSET WE8MSWIN1252

- 视窗

编辑

\\ u2019:这是正确的单引号,我仅在寻找该字符。

在命令行上运行时,请检查java属性“ file.encoding”,它可能设置为“ UTF-8”以外的名称,导致在命令行上输出时文本无法正确显示。

这是我在评论中建议的示例(更改客户的字符集)。 直接从我的SQL * Plus:

SQL> select unistr('\2019') from dual;

U
-
Æ

SQL> $chcp 1252
Active code page: 1252

SQL> select unistr('\2019') from dual;

U
-
’

如果这对您$chcp 1252可能需要将$chcp 1252添加到[g]login.sql

问题是撇号的字符编码为\\ u0027

我在命令行中运行了此命令:

public class Yesterday{
    public static void main(String[] args) {
        String s = new String("yesterday" + "\u0027" +"s");
        System.out.println(s);
    }
}

结果是:

yesterday's

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM