【问题标题】:Character coding between mysql and javamysql和java之间的字符编码
【发布时间】:2021-06-26 10:07:25
【问题描述】:

我在 Java 中打印特殊字符时出错。

系统从mysql数据库中读取一个产品名称,并从命令行检查数据库,数据正确显示Registered Symbol®。

然后,一个 java 程序运行一个数据库读取以获取订单信息以打印为 PDF,但是当生成打印时,® 符号变为“fi”。

在Java中处理时有没有办法保留自己的字符编码?

【问题讨论】:

标签: java mysql


【解决方案1】:

在打印到 PDF 之前,您可以将特殊字符替换为 unicode 字符,如下所示。

public static String specialCharactersConversion( String charString ) {          
     if( isNotEmpty( charString ) ){
          charString = charString.replaceAll(  "\\(R\\)", "\u00AE" );
     } 
}

【讨论】:

    【解决方案2】:

    有一个开源 java 库 MgntUtils 有一个实用程序,可以将字符串转换为 unicode 序列,反之亦然:

    result = "Hello World";
    result = StringUnicodeEncoderDecoder.encodeStringToUnicodeSequence(result);
    System.out.println(result);
    result = StringUnicodeEncoderDecoder.decodeUnicodeSequenceToString(result);
    System.out.println(result);
    

    这段代码的输出是:

    \u0048\u0065\u006c\u006c\u006f\u0020\u0057\u006f\u0072\u006c\u0064
    Hello World
    

    因此,在将文本转换为 PDF 之前,您可以将特殊字符或整个文本转换为 Unicode 序列。答案复制了这个问题的修改:Convert International String to \u Codes in java
    该库可以在Maven CentralGithub 找到它作为maven artifact 并带有源代码和javadoc

    这是StringUnicodeEncoderDecoder类的javadoc

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-09-14
      • 2011-08-22
      • 2016-03-31
      • 1970-01-01
      • 1970-01-01
      • 2013-09-06
      • 2012-07-24
      • 1970-01-01
      相关资源
      最近更新 更多