Maven/Intellij - niepoprawne kodowanie

Maven/Intellij - niepoprawne kodowanie
G9
  • Rejestracja:ponad 11 lat
  • Ostatnio:ponad 3 lata
  • Postów:8
0

Witam,

Mam następujący problem z kodowaniem. Posiadam GUI, które zaczytuje dane z pliku i je prezentuje. W pliku są wyrazy zawierające polskie znaki. Uruchamiam aplikację z poziomu IDE i znaki są wyświetlane poprawnie. Jeżeli buduję paczkę przy użyciu mavena, uruchamiam aplikację i jest niepoprawnie. Zmieniałem w pomie formy kodowanie ale to nie pomaga. Nie za bardzo rozumiem, po której stronie może być problem, gdzie jest właściwie niewłaściwe kodowanie. Na pewno nie po stronie kompilacji, tylko później gdy jest zaczytywany plik.

pom.xml

Kopiuj
 
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

    <modelVersion>4.0.0</modelVersion>
    <groupId>groupId</groupId>
    <artifactId>Automation</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <jdk.version>1.7</jdk.version>
        <testng.version>6.9.10</testng.version>
        <selenium.version>2.53.0</selenium.version>
        <log4j.version>1.2.9</log4j.version>
        <poi.version>3.7</poi.version>
        <project.build.sourceEncoding>ISO-8859-2</project.build.sourceEncoding>
        <!--<project.reporting.outputEncoding>ISO-8859-2</project.reporting.outputEncoding>-->

    </properties>

    <dependencies>

        <!--wspolne-->
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi</artifactId>
            <version>${poi.version}</version>
        </dependency>
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>${log4j.version}</version>
        </dependency>
        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-java</artifactId>
            <version>${selenium.version}</version>
        </dependency>
        <dependency>
            <groupId>org.testng</groupId>
            <artifactId>testng</artifactId>
            <version>${testng.version}</version>
        </dependency>

    </dependencies>

    <build>
        <plugins>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.5.1</version>
                <configuration>
                    <source>1.7</source>
                    <target>1.7</target>
                    <encoding>${project.build.sourceEncoding}</encoding>
                </configuration>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-assembly-plugin</artifactId>
                <version>2.4.1</version>

                <configuration>
                    <!-- get all project dependencies -->
                    <descriptorRefs>
                        <descriptorRef>jar-with-dependencies</descriptorRef>
                    </descriptorRefs>
                    <finalName>Biblioteki</finalName>
                    <!---->
                    <!--<outputDirectory>Z:\Biblioteki</outputDirectory>-->

                    <outputDirectory>D:\Biblioteki</outputDirectory>
                    <encoding>${project.build.sourceEncoding}</encoding>
                </configuration>
                <executions>
                    <execution>
                        <id>make-assembly</id>
                        <!-- bind to the packaging phase -->
                        <phase>package</phase>
                        <goals>
                            <goal>single</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-resources-plugin</artifactId>
                <version>2.7</version>
                <configuration>
                    <encoding>${project.build.sourceEncoding}</encoding>
                </configuration>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.19.1</version>
                <configuration>
                    <argLine>-Dfile.encoding=${project.build.sourceEncoding}</argLine>
                </configuration>
            </plugin>

        </plugins>


    </build>
</project>
G9
  • Rejestracja:ponad 11 lat
  • Ostatnio:ponad 3 lata
  • Postów:8
0

Problem leżał po innej stronie. Widocznie Intellij dodaje extra kodowanie dla czytanych plików. Przyszło mi do głowy żeby ustawić kodowanie dla zaczytywanego pliku i to faktycznie w nim leżał problem.

Plik był czytany w ten sposób poprzednio:
BufferedReader bufferedReader = new BufferedReader(new FileReader(new File(PATH)));

Zmieniłem na:
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(new FileInputStream(PATH), StandardCharsets.UTF_8));

Wszystko jest teraz w porządku

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.