导航:首页 > 编程语言 > java设置字符集

java设置字符集

发布时间:2024-09-19 11:47:34

java日志框架:slf4j作用及其实现原理

日志技术框架一览

JUL:JDK中的日志记录工具,也常称为JDKLog、jdk-logging。

LOG4J1:一个具体的日志实现框架。

LOG4J2:一个具体的日志实现框架,是LOG4J1的下一个版本。

LOGBACK:一个具体的日志实现框架,但其性能更好。

JCL:一个日志门面,提供统一的日志记录接口,也常称为commons-logging。

SLF4J:一个日志门面,与JCL一样提供统一的日志记录接口,可以方便地切换看具体的实现框架。

注意:JUL、LOG4J1、LOG4J2、LOGBACK是日志实现框架,而JCL、SLF4J是日志实现门面(接口)。

SLF4J结构概述

slf4j只是一个日志标准,并不是日志系统的具体实现。理解这句话非常重要,slf4j只做两件事情:

提供日志接口

提供获取具体日志对象的方法如如上图所示:SLF4J作为日志打印实现的适配层,业务代码不需要关心具体使用哪一种日志系统,且如何打印日志。

SLF4J简单Demo

1.引入对应jar包

25<dependency>26<groupId>org.slf4j</groupId>27<artifactId>slf4j-api</artifactId>28<version>1.7.32</version>29</dependency>30<dependency>31<groupId>ch.qos.logback</groupId>32<artifactId>logback-classic</artifactId>33<version>1.2.6</version>34</dependency>

2.增加配置文件log4j2.xml放在resource目录下:

<?xmlversion="1.0"encoding="UTF-8"?><configuration><!--<includeresource="org/springframework/boot/logging/logback/base.xml"/>--><!--appenders--><appendername="DEFAULT-APPENDER"class="ch.qos.logback.core.rolling.RollingFileAppender"><file>${LOG_PATH}/common.log</file><encoder><pattern>[%d][%level][%X{xRequestId}]%logger-%m%n</pattern><charset>UTF-8</charset><!--此处设置字符集--></encoder><rollingPolicyclass="ch.qos.logback.core.rolling.TimeBasedRollingPolicy"><!--dailyrollover--><fileNamePattern>${LOG_PATH}/common.log.%d{yyyy-MM-dd}</fileNamePattern></rollingPolicy></appender><!--loggers--><loggername="com.zenlayer.zenconsole.ocs"level="INFO"additivity="false"><appender-refref="APP-DEFAULT-APPENDER"/><appender-refref="ERROR-APPENDER"/></logger><rootlevel="INFO"><appender-refref="DEFAULT-APPENDER"/><appender-refref="ERROR-APPENDER"/></root></configuration>

3.测试方法

=LoggerFactory.getLogger(SelectBillingOrderImplTest.class);@TestpublicvoidlogTest()throwsIOException{logger.info("");logger.warn("");logger.error("");}

4.执行结果

SLF4J原理解析

1.创建Logger对象(Logger常定义为全局单例对象)

2.getLogger方法

3.拿到实力化工场,并根据日志类返回Logger对象

4.实力化日志工场

5.bind方法为slf4j的核心

6.slf4j回去classPatch下面找所有org.slf4j.impl下StaticLoggerBinder这个类注:存在引入多个Log实现的情况,所以slf4j返回的是一个Set集合但是实际情况系统加载器只加载一个StaticLoggerBinder类。所以启动时会报错,且默认使用加载到的第一个Log实现类,然后调用改类的getSingleton方法

7.以上已经成功获取了ILoggerFactory之后的逻辑是调用Factory的getLogger方法来获取Logger对象。回到了源码:3的位置

找到一种实现,我以LogBack为例:

⑵ java怎么设置utf8

服务器端
修改数据库配置文件/etc/my.cnf
character-set-server=utf8mb4
collation_server=utf8mb4_unicode_ci
重启MySQL(按照官方文答培档,这两个选项都是可以动态设置的,但是实际的经验是Server必须重启一下)
已有的表修改编码为utf8mb4
ALTER TABLE
tbl_name
CONVERT TO CHARACTER SET
charset_name;
使用下面这个语句只是修改了表的default编码
ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4;
客户端
jdbc的连接字符串不支持utf8mb4,这个 这种方式 来解决的,如果服务器端设置了character_set_server=utf8mb4,则客户端会自动将传过去的utf-8视作清和唯utf8mb4。
Connector/J did not support utf8mb4 for servers 5.5.2 and newer.
Connector/J now auto-detects servers configured with character_set_server=utf8mb4 or treats the Java encoding utf-8 passed using characterEncoding=... as utf8mb4 in the SET NAMES= calls it makes when establishing the connection. (Bug #54175)
其他的client端,比如phppython需要看下client是否支持,如果不能在连接字符串中指定的话,可以在获取连接之后,执行”set names utf8mb4″来解决这个问题;
因为utf8mb4是utf8的超集,理论上即使client修改字符集为utf8mb4,也会不棚滑会对已有的utf8编码读取产生任何问题。

⑶ Java 如何设置打开文件内容的字符集

方法一:在Eclipse里设置

1、windows->Preferences...打开"首选项"对话框,左侧导航树,导航到general->Workspace,右侧Text file encoding,选择Other,改变为 utf-8(必须小写),以后新建立工程其属性对话框中的Text file encoding即为UTF-8。
2、windows->Preferences...打开"首选项"对话框,左侧导航树,导航到general->Content Types,右侧Content Types树,点开Text,选择 Java Source File,在下面的Default encoding输入框中输入UTF-8,点Update,则设置Java文件编码为UTF-8。然后设置jsp、js、css等类型的Default encoding,设置方式同Java Source File。
3.windows->Preferences...打开"首选项"对话框,左侧导航树,导航到MyEclipse->Files and Editors->JSP,把Encoding改为UTF-8
方法二:在代码中设置
要是把控制台的内容输出到文件中(输出流)
OutputStream out = new FileOutputStream("d:\\demo.txt");
out.write("我们".getBytes());
在getBytes()里头写你要用的字符集,例如:out.write("我们".getBytes("UTF-8"));
要是想把文件的内容输入到控制台中(输入流)
InputStreamReader in = new InputStreamReader(new FileInputStream(“demo.txt”),”UTF-8”);

⑷ eclipse中java中文控制台输出的这种乱码怎么解决

eclipse中java中文控制台输出的这种乱码解决方式:

一、(1)打开eclipse或myeclipse,点击run-》runconfigurations

二、方法如下:

打开eclipse.ini文件(在eclipse的安装目录)添加上这句话 -Dfile.encoding = utf-8,设置系统属性file.encoding为utf-8.

阅读全文

与java设置字符集相关的资料

热点内容
dune源码编译 浏览:911
云班课服务器在哪 浏览:874
微信怎么设不上加密锁 浏览:188
云服务器并发评测 浏览:416
100g的文件压缩 浏览:100
怎么把图片换成pdf 浏览:463
java编程习题集 浏览:820
linux查看服务http 浏览:546
阿里云研究生服务器 浏览:98
姐姐们的恋爱在哪个APP看 浏览:905
什么服务器可以连结埃及的 浏览:117
51单片机学多久 浏览:737
源码内存泄漏分析工具 浏览:796
次梁梁口可以不加密吗 浏览:506
数控车g71粗加工编程 浏览:849
有什么挣钱的app 浏览:523
欧姆龙人机界面编程软件 浏览:171
手机nfc可以刷加密门禁卡吗 浏览:80
上海坐地铁用什么app 浏览:344
win命令行编译qt应用 浏览:802