小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

idea maven 亂碼 控制臺(tái)

 一本正經(jīng)地胡鬧 2019-12-09
------------------------
根本解決方法:
Setting->maven->runner  VMoptions:-Dfile.encoding=GB2312
或者 -Dfile.encoding=GBK
------------------------
其他方法:
1. jdbc:mysql://localhost:3306/sheep?characterEncoding=utf-8 連接數(shù)據(jù)庫取數(shù)據(jù)層面
2. idea64.exe.vmoptions(32位的是idea.exe.vmoptions)添加-Dfile.encoding=UTF-8
3. Setting->Editor->File Encodings 設(shè)置UTF-8
4.  設(shè)置windows環(huán)境變量 變量名: JAVA_TOOL_OPTIONS, 變量值:-Dfile.encoding=UTF-8
5.  run-->edit configurations  VM options一欄:-Dfile.encoding=UTF-8
問題:

windows下,idea里,setting-->file encoding改成utf-8后,maven工程System.out.println()控制臺(tái)出現(xiàn)中文亂碼。但java工程不是亂碼。

解決方法:

將jvm默認(rèn)編碼設(shè)置為UTF-8

方法一:run-->edit configurations,在需要的類上,VM options里添加


方法二:創(chuàng)建系統(tǒng)環(huán)境變量(一勞永逸):

變量名: JAVA_TOOL_OPTIONS, 變量值:-Dfile.encoding=UTF-8

轉(zhuǎn)自 https://www.cnblogs.com/LinKinSJ/p/9096921.html

原因分析:

命令行導(dǎo)致亂碼

JAVA_TOOL_OPTIONS用于解決的經(jīng)典問題是使用命令行導(dǎo)致中文亂碼,通過設(shè)置環(huán)境變量JAVA_TOOL_OPTIONS="-Dfile.encoding=UTF-8"一般可以解決。(https://blog.csdn.net/ly199108171231/article/details/85253946

maven工程恰恰是用命令行啟動(dòng)。分析:應(yīng)該是命令行沒有輸入相關(guān)參數(shù),導(dǎo)致了輸出亂碼。

java工程和maven工程里的-Dfile.encoding=UTF-8

以下是java工程執(zhí)行時(shí)的命令行,紅色行-Dfile.encoding=UTF-8后面跟著jdk里的包

E:\java\tts9-v2-win-x64\tts9\jdk1\bin\java.exe
        +
        +
        +
        E:\java\tts9-v2-win-x64\tts9\jdk1\jre\lib\deploy.jarE:\java\tts9-v2-win-x64\tts9\jdk1\jre\lib\ext\access-bridge-jarE:\java\tts9-v2-win-x64\tts9\jdk1\jre\lib\ext\cldrdata.jarE:\java\tts9-v2-win-x64\tts9\jdk1\jre\lib\ext\dnsns.jarE:\java\tts9-v2-win-x64\tts9\jdk1\jre\lib\ext\jaccess.jarE:\java\tts9-v2-win-x64\tts9\jdk1\jre\lib\ext\jfxrt.jarE:\java\tts9-v2-win-x64\tts9\jdk1\jre\lib\ext\localedata.jarE:\java\tts9-v2-win-x64\tts9\jdk1\jre\lib\ext\nashorn.jarE:\java\tts9-v2-win-x64\tts9\jdk1\jre\lib\ext\sunec.jarE:\java\tts9-v2-win-x64\tts9\jdk1\jre\lib\ext\sunjce_provider.jarE:\java\tts9-v2-win-x64\tts9\jdk1\jre\lib\ext\sunmscapi.jarE:\java\tts9-v2-win-x64\tts9\jdk1\jre\lib\ext\sunpkcs11.jarE:\java\tts9-v2-win-x64\tts9\jdk1\jre\lib\ext\zipfs.jarE:\java\tts9-v2-win-x64\tts9\jdk1\jre\lib\javaws.jarE:\java\tts9-v2-win-x64\tts9\jdk1\jre\lib\jce.jarE:\java\tts9-v2-win-x64\tts9\jdk1\jre\lib\jfr.jarE:\java\tts9-v2-win-x64\tts9\jdk1\jre\lib\jfxswt.jarE:\java\tts9-v2-win-x64\tts9\jdk1\jre\lib\jsse.jarE:\java\tts9-v2-win-x64\tts9\jdk1\jre\lib\management-agent.jarE:\java\tts9-v2-win-x64\tts9\jdk1\jre\lib\plugin.jarE:\java\tts9-v2-win-x64\tts9\jdk1\jre\lib\resources.jarE:\java\tts9-v2-win-x64\tts9\jdk1\jre\lib\rt.jarD:\IDEAProject\leyou\code\demo7\out\production\test-encoding-java b.Test2

以下是maven工程執(zhí)行時(shí)的命令行(已加入了-Dfile.encoding=utf-8參數(shù)):

沒有加參數(shù),則紅色行里沒有-Dfile.encoding=UTF-8

E:\java\tts9-v2-win-x64\tts9\jdk1\bin\java.exe
-Dmaven.multiModuleProjectDirectory=D:\IDEAProject\leyou\code\demo7\test-encoding 
        -DarchetypeCatalog=internal -Dmaven.home=D:\java_tool\apache-maven--Dclassworlds.conf=D:\java_tool\apache-maven-\bin\m2.conf 
        +
        +
        -Dfile.encoding=UTF--classpath D:\java_tool\apache-maven-\boot\plexus-classworlds-.jar 
        org.codehaus.classworlds.Launcher -Didea.version2019-s D:\java_tool\apache-maven-\conf\settings.xml 
        -Dmaven.repo.local=D:\heima\.m2\repository -Dexec.workingdir=D:\IDEAProject\leyou\code\demo7 
        -Dexec.executable=E:\java\tts9-v2-win-x64\tts9\jdk1\bin\java.exe exec:exec

檢查jvm默認(rèn)編碼

import java.io.ByteArrayOutputStream;

import java.io.OutputStreamWriter;

import java.nio.charset.Charset;

class HelloWorld {

    public static void main(String[] args) {

        System.out.println("Default Charset=" + Charset.defaultCharset());//gbk

        System.out.println("file.encoding=" + System.getProperty("file.encoding"));//gbk

        System.out.println("Default Charset in Use=" + getDefaultCharSet());//gbk

    }

    private static String getDefaultCharSet() {

        OutputStreamWriter writer = new OutputStreamWriter(new ByteArrayOutputStream());

        String enc = writer.getEncoding();

        return enc;

    }

}


jvm啟動(dòng)參數(shù)設(shè)置-Dfile.encoding=utf-8

注意事項(xiàng):開發(fā)工具里project設(shè)置為utf-8,同時(shí)設(shè)置-Dfile.encoding=utf-8

轉(zhuǎn)自 https://blog.csdn.net/jv_csjh/article/details/78581826


-Dfile.encoding解釋:
在命令行中輸入java,在給出的提示中會(huì)出現(xiàn)-D的說明:
-D=  set a system property
-D后面需要跟一個(gè)鍵值對(duì),作用是設(shè)置一項(xiàng)系統(tǒng)屬性
對(duì)-Dfile.encoding=UTF-8來說就是設(shè)置系統(tǒng)屬性file.encoding為UTF-8
那么file.encoding什么意思?字面意思為文件編碼。
搜索java源碼,只能找到4個(gè)文件中包含file.encoding的文件,也就是說只有四個(gè)文件調(diào)用了file.encoding這個(gè)屬性。
在java.nio.charset包中的Charset.java中。這段話的意思說的很明確了,簡(jiǎn)單說就是默認(rèn)字符集是在java虛擬機(jī)啟動(dòng)時(shí)決定的,依賴于java虛擬機(jī)所在的操作系統(tǒng)的區(qū)域以及字符集。
代碼中可以看到,默認(rèn)字符集就是從file.encoding這個(gè)屬性中獲取的。個(gè)人感覺這個(gè)是最重要的一個(gè)因素。下面的三個(gè)可以看看。

/**
     * Returns the default charset of this Java virtual machine.
     *
     *

The default charset is determined during virtual-machine startup and
     * typically depends upon the locale and charset of the underlying
     * operating system.

     *
     * @return A charset object for the default charset
     *
     * @since 1.5
     */
    public static Charset defaultCharset() {
        if (defaultCharset == null) {
     synchronized (Charset.class) {
   java.security.PrivilegedAction pa =
      new GetPropertyAction("file.encoding");
   String csn = (String)AccessController.doPrivileged(pa);
   Charset cs = lookup(csn);
   if (cs != null)
      defaultCharset = cs;
                else 
      defaultCharset = forName("UTF-8");
            }
}
return defaultCharset;
}

在java.net包中的URLEncoder.java中的static塊里面:
dfltEncName = (String)AccessController.doPrivileged (
      new GetPropertyAction("file.encoding")
     );
在javax.print包中的DocFlavor.java
static {
   hostEncoding = 
      (String)java.security.AccessController.doPrivileged(
                   new sun.security.action.GetPropertyAction("file.encoding"));
     }
在com.sun.org.apache.xml.internal.serializer包中的Encodings
// Get the default system character encoding. This may be
                 // incorrect if they passed in a writer, but right now there
                 // seems to be no way to get the encoding from a writer.
                 encoding = System.getProperty("file.encoding", "UTF8");

轉(zhuǎn)自 https://blog.csdn.net/belalds/article/details/80811824

mac系統(tǒng)中,Jar Launcher.app啟動(dòng)jar文件時(shí),file.encoding屬性變成MacRoman

轉(zhuǎn)自 https://blog.csdn.net/haixia_12/article/details/42424513

未解決的問題:

java工程中,file.encoding無論是gbk還是utf-8,控制臺(tái)都不會(huì)中文亂碼。

idea和cmd已做實(shí)驗(yàn)驗(yàn)證。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多