gpt4 book ai didi

java - 如何使用 log4j 将希伯来语字符串写入日志文件

转载 作者:行者123 更新时间:2023-12-02 04:58:00 29 4
gpt4 key购买 nike

如何将希伯来语字符串写入 log4j 文件。现在我在文件中看到??????

我在网上到处搜索将Unicode转换为字符串:

String abc = myStr.replaceAll("\u200F", "");
abc = abc.replaceAll("\u200E", "");
byte[] utf8Bytes = abc.getBytes(Charset.forName("UTF-8"));
String value = new String(utf8Bytes);
log.debug("value : "+ value );

我只需要以可读格式将希伯来语字符串写入 Log4j 文件。这是我的配置:

log4j.rootLogger=debug, stdout, R log4j.logger.testlogging=DEBUG 
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%d{yyyy-MM-dd} %5p [%t] (%F:%L) - %m%n log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=C:\\dri\\ums.log log4j.appender.R.MaxBackupIndex=5
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern= %d{dd MMM yyyy HH:mm:ss,SSS} %5p [%t] (%F:%L) - %m%n log4j.appender.FILE.encoding=UTF-8

最佳答案

根据我从评论中收集到的信息以及我自己的经验,这很可能不是 Log4j 本身的问题。我发表了一条评论表明这一点:

What exactly do you mean with Log4j file? Is it a regular text log file that the FileAppender points to? Because I've tried printing Hebrew text right now and all is working out fine. I believe this is not a Log4j issue and might be related to your text reader.

其他评论证实了他们的怀疑,即您的文本阅读器可能导致了此问题。我能够通过在 Notepad++ 中执行以下操作来重现您的问题:

  • 在 Notepad++ 中打开新标签页。
  • 复制并粘贴sample包含希伯来字母的文本。
  • 语言 -> 转换为 ANSI

转换前的文本:

另请参阅:אלף־בתת‎ 和 אַלף־בйת‎

转换后的文本:

另请参阅:?????????和?????????

根据您提供的代码(假设没有我们不知道的幕后花招),我们可以明确得出结论,您正在写入一个编码设置为ANSI 其中所有特殊字符都将转换为问号,因为它们无法解码,或者您的字符被读取为 UTF-8 但仅显示为 ANSI.

ANSI and UTF-8 are both encoding formats. ANSI is the common one byte format used to encode Latin alphabet; whereas, UTF-8 is a Unicode format of variable length (from 1 to 4 bytes) which can encode all possible characters.

我建议遵循以下步骤:

  • 导航至设置 -> 首选项 -> 新文档 -> 编码 并确保 UTF-8(应用于打开的 ANSI 文件) 选项已启用已选择。

  • 关闭当前在 Notepad++ 中打开的所有文件并删除日志文件。确保您实际上关闭文件,而不是仅仅关闭Notepad++。这应该会从缓存中清除文件条目,并允许您使用不同的编码再次打开它们。

  • 运行 Java 应用程序并让 Log4j 打印到文件。

  • 使用 Notepad++ 打开文件,并通过单击Encoding 选项卡检查是否使用 UTF-8 进行编码。如果该选项未设置为 UTF-8,请更改它。

  • 如果上述方法均无效,请在评论中发布更多信息。

不幸的是,我不太精通编码问题,在编写本文的过程中不得不查找一些东西,所以我无法为您提供我想要的帮助。然而,除了提供上述步骤之外,我还可以引导您访问以下链接,这些链接应该为您提供更多知识,并(因此)更深入地了解您的问题:

关于java - 如何使用 log4j 将希伯来语字符串写入日志文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56401638/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com