42758


お世話になっています。

Intellij IDEA (2017.3.4)でJavaの開発をしています。その中で

[code]

    System.out.println("あいうえお");
    
[/code]

のように日本語の文字を出力すると文字化けします。いくつか注意点を述べます。

  1. 以前は文字化けしませんでした。ある時期から起きるようになったので不注意でなにか設定を変えたのかも知れませんが、思い当たるフシがありません。

  2. コンソールの非ASCII文字、確認しているだけで日本語、中国語、フランス語特有の文字が?に置き換わります。

  3. 非ASCII文字に関連するテストが失敗します。単にコンソールで?になるだけでなく、内部的にも問題が起きているように思います。

  4. maven projectからtestした場合にはテストが失敗しますが、Projectで右クリックをしてRun Testした場合にはテストは成功しますし、文字化けもしません。

  5. ターミナルで実行（mavenプロジェクトですので、mvn clean packageなど）した場合には文字化けもテストで失敗もしません。

  6. 新規プロジェクトを作り、JUnit4のテストクラスを作り実行しても文字化けします。

_

[code]

    import org.junit.Test;
    
    import static org.junit.Assert.*;
    
    public class MainTest {
        @Test
        public void test() {
            System.out.println("あいうえお");
        }
    }
    
[/code]

[![プロジェクトからRun
MainTestした場合](https://i.stack.imgur.com/ZRdXW.png)](https://i.stack.imgur.com/ZRdXW.png)

[![Maven
Projectからtestを選んだ場合](https://i.stack.imgur.com/zLNOt.png)](https://i.stack.imgur.com/zLNOt.png)

つまり文字化けが起こるのはIntellij IDEAのMaven
Projectから実行したときのみです。それ以外、ターミナルから実行したり、プロジェクト（通常左側にあるファイルの一覧）から実行したときも文字化けは起きません。

`pom.xml`は再三見ていますが、これと言って怪しそうな箇所はありません（見落としているだけかも知れません）。該当の`pom.xml`を載せることはできなくて申し訳ありません。

もし心当たりがある方がいらっしゃいましたら助言をお願いします。

# 追記

packet0さんの回答で無事に解決しました。いくつか新しく気づいたことを追記しておきます。

# テストの文字化けについて

これは教えていただいたとおり次の記述を足すことで解決しました。ポイントは`<argLine>-Dfile.encoding=UTF-8</argLine>`でした。

[code]

        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-surefire-plugin</artifactId>
            <configuration>
                <junitArtifactName>junit:junit</junitArtifactName>
                <argLine>-Dfile.encoding=UTF-8</argLine>
                <skipTests>false</skipTests>
            </configuration>
        </plugin>
    
[/code]

# exec:execについて

別のプロジェクト（jettyを使ったプロジェクトでログをコンソールに表示していた）では相変わらず化けていましたが、今回のことをヒントに次のようにしたところ、コンソールのログの文字化けが直りました。

[code]

        <plugin>
            <groupId>org.codehaus.mojo</groupId>
            <artifactId>exec-maven-plugin</artifactId>
            <version>1.2</version>
            <configuration>
                <executable>java</executable>
                <arguments>
                    <argument>-Dtomcat.util.scan.StandardJarScanFilter.jarsToScan=taglibs-standard-impl-*</argument>
                    <argument>-Dtomcat.util.scan.StandardJarScanFilter.jarsToSkip=apache-*,ecj-*,jetty-*,asm-*,javax.servlet-*,javax.annotation-*,taglibs-standard-spec-*</argument>
                    <argument>-Dfile.encoding=UTF-8</argument>
                    <argument>-cp</argument>
                    <classpath />
                    <argument>プロジェクト名</argument>
                    <argument>8888</argument>
                </arguments>
            </configuration>
        </plugin>
    
[/code]

ポイントはやはり`<argument>-Dfile.encoding=UTF-8</argument>`です。

回答ありがとうございました！


CC BY-SA 3.0
2018-03-28T22:39:36.670
42721
2018-03-29T18:53:19.923
2018-03-29T18:53:19.923
14631
14631
question
java maven intellij-idea
Intellij IDEAのコンソールでの文字化けの原因について


関係してそうな[記事](http://progmemo.wp.xdomain.jp/archives/925)がありました。

要約すると

  1. `pom.xml`の`<properties>`に以下を追加

[code]

    <properties>
        ...
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        ...
    </properties>
    
[/code]

  2. 治らない場合は`<plugins>`ないを以下のように追加・編集

[code]

    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-surefire-plugin</artifactId>
        ...
        <configuration>
            <junitArtifactName>junit:junit</junitArtifactName>
            <encoding>UTF-8</encoding>
            <inputEncoding>UTF-8</inputEncoding>
            <outputEncoding>UTF-8</outputEncoding>
            <argLine>... -Dfile.encoding=UTF-8</argLine>
        </configuration>
    </plugin>
    
[/code]

いずれも仮定しているエンコーディングがあってないのを直す処理です。ソースファイルがUTF8でなければ、合うように変更してください。


CC BY-SA 3.0
2018-03-29T16:36:58.740
42758
2018-03-29T16:36:58.740
3974
42721
answer