Java代碼中如何設(shè)置輸出字符集為UTF-8
今日無聊,來試試如何在 Java
代碼中更改輸出字符集。
一行代碼設(shè)置輸出字符集為UTF-8
import java.io.PrintStream; import java.nio.charset.StandardCharsets; import java.util.Scanner; public class Main { public static void main(String[] args) { System.setOut(new PrintStream(System.out, true, StandardCharsets.UTF_8)); System.out.println("Hello world!"); System.out.println("請輸入年份:"); int year; year = new Scanner(System.in).nextInt(); boolean isLeapYear = isLeapYear(year); System.out.println(isLeapYear); } /** * @param year 年份 * @return 是否是閏年 */ static boolean isLeapYear(int year){ if(year % 4 == 0 && year % 100 != 0){ return true; }else return year % 400 == 0; } }
其中我們要看的語句,其實(shí)只有一行
System.setOut(new PrintStream(System.out, true, StandardCharsets.UTF_8));
在設(shè)置Java程序的輸出字符集為UTF-8。
System.setOut
是 Java標(biāo)準(zhǔn)庫 中的一個靜態(tài)方法,用于設(shè)置標(biāo)準(zhǔn)輸出流。標(biāo)準(zhǔn)輸出流是程序輸出信息的默認(rèn)位置,通常是控制臺。
new PrintStream(System.out, true, StandardCharsets.UTF_8)創(chuàng)建了一個新的PrintStream對象。這個對象的構(gòu)造函數(shù)接受三個參數(shù):
- System.out 表示這個流將要輸出到控制臺。
- true 表示開啟自動刷新,即在輸出后立即刷新緩沖區(qū)。
- StandardCharsets.UTF_8表示使用UTF-8字符集編碼輸出的字符。
總之,這一行代碼的作用是將程序的輸出字符集設(shè)置為UTF-8,使得程序能正確輸出中文字符。
除此之外沒有別的辦法了嗎?
答案當(dāng)然是:有的。
其他辦法
1.命令行中使用JVM參數(shù):
可以在運(yùn)行Java程序時,在命令行上使用-Dfile.encoding=UTF-8
來設(shè)置程序的輸出字符集。
java -Dfile.encoding=UTF-8 Main
2.通過環(huán)境變量設(shè)置:
可以在運(yùn)行程序之前設(shè)置環(huán)境變量file.encoding的值為UTF-8, 例如在linux中:
export file.encoding=UTF-8 java main
或者在windows中:
set file.encoding=UTF-8 java Main
3.設(shè)置編碼格式:
你可以在程序中使用 -encoding UTF-8 選項(xiàng)來告訴編譯器使用 UTF-8 編碼格式來編譯你的代碼。例如:
javac -encoding UTF-8 Main.java
這樣編譯后的字節(jié)碼文件就會使用UTF-8編碼格式。
以后遇到中文亂碼就不用怕啦,如果遇到了中文亂碼問題,可以使用上述方法來解決。設(shè)置程序的輸出字符集為UTF-8可以確保程序能正確輸出中文字符。
另外,還有一些其他的解決中文亂碼問題的方法,比如在文件頭部添加UTF-8編碼聲明,或者在文本編輯器中打開文件時選擇UTF-8編碼。
到此這篇關(guān)于Java代碼中設(shè)置輸出字符集為UTF-8的文章就介紹到這了,更多相關(guān)Java輸出字符集為UTF-8內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
學(xué)習(xí)Java之自定義異常與NullPointerException的處理
有時候Java自身提供的異常類并不能很好地表達(dá)我們的需求,所以這時候我們就可以自定義異常,也就是說,我們可以制造出一個自己的異常類,這樣就可以拋出或捕獲自己的異常了,本文就給大家詳細(xì)講講Java自定義異常與NullPointerException的處理2023-08-08SpringBoot工程中Spring Security應(yīng)用實(shí)踐記錄流程分析
Spring Security是一個能夠?yàn)榛赟pring的企業(yè)應(yīng)用系統(tǒng)提供聲明式的安全訪問控制解決方案的安全框架。這篇文章主要介紹了SpringBoot工程中Spring Security應(yīng)用實(shí)踐,需要的朋友可以參考下2021-09-09StringUtils工具包中字符串非空判斷isNotEmpty和isNotBlank的區(qū)別
今天小編就為大家分享一篇關(guān)于StringUtils工具包中字符串非空判斷isNotEmpty和isNotBlank的區(qū)別,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2018-12-12解決使用mybatis-plus時,生成的SQL大寫變小寫加下劃線問題
這篇文章主要介紹了解決使用mybatis-plus時,生成的SQL大寫變小寫加下劃線問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-12-12