스캐너 대 System.console () .write ()

킥 부토 스키

화면에 스페인어 악센트가 포함 된 문자열을 인쇄하려고했습니다. 동일한 입력으로 다른 답변을 얻지 만 접근 방식이 다릅니다.

첫 번째 접근 방식은 스캐너 클래스를 통해 스페인어 악센트가 포함 된 문자열을 읽는 것입니다.

 //input is a á e é i í o ó u ú A Á E É I Í O Ó U Ú Ñ ñ

    Scanner sc = new Scanner(System.in);
    System.out.println("Enter some spanish chars next: ");
    String spanishLine = sc.nextLine();

    try {
        System.out.println("Output from Scanner: " + spanishLine);
        System.console().writer().println(spanishLine);
    } catch (Exception e) {

    }

두 번째 apporche는이 웹리스트에서 찾은 것입니다. http://www.rgagnon.com/javadetails/java-0046.html

        String s = "a á e é i í o ó u ú A Á E É I Í O Ó U Ú Ñ ñ";

        try {
            System.out.println("Output from System.console: " + s);
            System.console().writer().println(s);
        } catch (Exception e) {

        }

내 결과는 다음과 같습니다

Enter some spanish chars next: 
a á e é i í o ó u ú A Á E É I Í O Ó U Ú Ñ ñ
output from Scanner: a � e � i � o � u � A � E � I � O � U � � �
output from System.console: a á e é i í o ó u ú A Á E É I Í O Ó U Ú Ñ ñ

누구든지 동일한 입력에서 두 가지 다른 답변을 얻는 이유를 설명 할 수 있습니까? 두 번째 접근 방식과 동일한 결과를 얻기 위해 첫 번째 접근 방식을 어떻게 수정할 수 있습니까?

Joop Eggen

대답이 아님

여전히 몇 가지 사항을 확인해야합니다.

  1. Java 컴파일러에서 사용하는 Java 소스 인코딩은 텍스트 / 편집기의 인코딩과 동일해야합니다.

    • JEdit 또는 NotePad ++와 같은 프로그래머의 편집기로이를 확인할 수 있습니다.
  2. 기본 인코딩을 확인하십시오.

    • System.out.println(System.getProperty("file.encoding"));
    • 또는 Scanner 생성자에 추가 인코딩 매개 변수를 추가합니다.
    • 그 이유는 기본 플랫폼 인코딩이 사용되는 인코딩이없는 메서드 / 생성자 버전이 있기 때문입니다.
  3. System.out / console을 파일로 리디렉션합니다.

    • 이 경우 문자열을 UTF-8로 작성하는 것으로 충분합니다.
  4. IDE가 아닌 실제 콘솔을 사용해보십시오 .

    • IDE "콘솔"의 인코딩을 구성 할 수 있습니다.

나는 그 행동이 어리둥절하다는 것을 알았다. 스캐너가 UTF-8 인코딩 문자 집합을 가져 와서 US-ASCII에 써야하는 것처럼 보이므로 umappable 문자는 . 그럴 수 없습니다. 스캐너가 "버기"인 것 같습니다.

문자열 덤프를 시도하십시오.

for (int i = 0; i < s.length(); ) {
    int cp = s.codePointAt(i);
    System.out.printf(" %x", cp);
    i += Character.charCount(cp);
}
System.out.println();

(일반적으로 완료되지 않음)

System.setProperty("file.encoding","Windows-1252");

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Javascript console.log 대 Durandal system.log

분류에서Dev

Java 파일 스캐너에 대한 NoSuchElementException

분류에서Dev

취약점 스캐너, nmap 대 Nessus

분류에서Dev

Java 스캐너에 대한 Byte [] 입력

분류에서Dev

스캐너 (BlueJ)에 대한 질문

분류에서Dev

이름에 대한 중복 스캐너 입력을 방지

분류에서Dev

스캐너 사용에 대한 두 번째 무한 루프

분류에서Dev

부트 스트랩 캐 러셀 최대 화면 너비

분류에서Dev

자바 스캐너가 대답을 무시 함

분류에서Dev

int 및 string 형 배열에 대한 Java 스캐너 입력

분류에서Dev

변경 / 손상된 파일에 대한 PHP 보안 스캐너

분류에서Dev

Write Non-BMP Code Points to Console

분류에서Dev

write shell script similar history in console

분류에서Dev

write shell script similar history in console

분류에서Dev

C # console.write 표시 문

분류에서Dev

AngularJS로 선택 옵션에 대한 스캐너 소스 배열 채우기

분류에서Dev

Wire.write ()에 대한 인수가 유형 캐스팅 된 이유는 무엇입니까?

분류에서Dev

더블 읽기 후 스캐너가 제대로 작동하지 않습니다.

분류에서Dev

Symfony에서 자동 차단 / 금지 무차별 대입 스캐너

분류에서Dev

스캐너 InputMismatchException

분류에서Dev

스캐너 + TesterClass?

분류에서Dev

스캐너로 nextDouble ()을 수행 할 수 있지만 double 대신 문자열에 대해 어떻게합니까?

분류에서Dev

Console.WriteLine () 대 Console.WriteLine (string.Empty)

분류에서Dev

`System.CopyArray` 대`System.Copy`?

분류에서Dev

How can I write into the browser´s console via Blazor WebAssembly?

분류에서Dev

Console.Write가 실패합니까?

분류에서Dev

Execute a console program, write to standard input and read result with pipe

분류에서Dev

Make an R script write lines to the console faster (Rgui)

분류에서Dev

I can't write object literal notation in Dev Console?

Related 관련 기사

  1. 1

    Javascript console.log 대 Durandal system.log

  2. 2

    Java 파일 스캐너에 대한 NoSuchElementException

  3. 3

    취약점 스캐너, nmap 대 Nessus

  4. 4

    Java 스캐너에 대한 Byte [] 입력

  5. 5

    스캐너 (BlueJ)에 대한 질문

  6. 6

    이름에 대한 중복 스캐너 입력을 방지

  7. 7

    스캐너 사용에 대한 두 번째 무한 루프

  8. 8

    부트 스트랩 캐 러셀 최대 화면 너비

  9. 9

    자바 스캐너가 대답을 무시 함

  10. 10

    int 및 string 형 배열에 대한 Java 스캐너 입력

  11. 11

    변경 / 손상된 파일에 대한 PHP 보안 스캐너

  12. 12

    Write Non-BMP Code Points to Console

  13. 13

    write shell script similar history in console

  14. 14

    write shell script similar history in console

  15. 15

    C # console.write 표시 문

  16. 16

    AngularJS로 선택 옵션에 대한 스캐너 소스 배열 채우기

  17. 17

    Wire.write ()에 대한 인수가 유형 캐스팅 된 이유는 무엇입니까?

  18. 18

    더블 읽기 후 스캐너가 제대로 작동하지 않습니다.

  19. 19

    Symfony에서 자동 차단 / 금지 무차별 대입 스캐너

  20. 20

    스캐너 InputMismatchException

  21. 21

    스캐너 + TesterClass?

  22. 22

    스캐너로 nextDouble ()을 수행 할 수 있지만 double 대신 문자열에 대해 어떻게합니까?

  23. 23

    Console.WriteLine () 대 Console.WriteLine (string.Empty)

  24. 24

    `System.CopyArray` 대`System.Copy`?

  25. 25

    How can I write into the browser´s console via Blazor WebAssembly?

  26. 26

    Console.Write가 실패합니까?

  27. 27

    Execute a console program, write to standard input and read result with pipe

  28. 28

    Make an R script write lines to the console faster (Rgui)

  29. 29

    I can't write object literal notation in Dev Console?

뜨겁다태그

보관