[java] Java 문자열을 ASCII 바이트 배열로 변환하는 방법은 무엇입니까?

Java 문자열을 ASCII 바이트 배열로 변환하는 방법은 무엇입니까?



답변

getBytes방법을 사용하여 적절한 Charset(또는 Charset이름)을 지정합니다.

예:

String s = "Hello, there.";
byte[] b = s.getBytes(StandardCharsets.US_ASCII);

(자바 7 전 : byte[] b = s.getBytes("US-ASCII");)


답변

당신이 사용자에게 편리한 Charsets수업이 있습니다.

String s = "Hello, world!";
byte[] b = s.getBytes(Charsets.US_ASCII);

그렇다 소스 코드가 훨씬 더 큰 장점을 가지고에 임의의 캐릭터 이름을 하드 코딩하지 가입일 : Charsets.US_ASCII이다 Charset유형 (하지 String)를 체크 피할 그래서 UnsupportedEncodingException단지에서 발생 String.getBytes(String)있지만에서 String.getBytes(Charset).

Java 7에는 동등한 StandardCharsets클래스가 있습니다.


답변

시도한 코드에 잘못된 문자가 하나뿐입니다.

Charset characterSet = Charset.forName("US-ASCII");
String string = "Wazzup";
byte[] bytes = String.getBytes(characterSet);
               ^

대문자 “String”을 확인하십시오. 존재하지 않는 문자열 클래스에서 정적 메서드를 호출하려고합니다. 대신 문자열 인스턴스에서 메서드를 호출해야합니다.

byte[] bytes = string.getBytes(characterSet);


답변

다른 제안 된 솔루션의 문제점은 ASCII에 직접 매핑 할 수없는 문자를 삭제하거나 ?.

예를 들어 악센트 부호가있는 문자를 악센트없이 동일한 문자로 변환 할 수 있습니다. 이를 수행하는 몇 가지 트릭이 있지만 (직접 정적 매핑 테이블을 작성하거나 유니 코드에 대해 정의 된 기존 ‘정규화’를 활용하는 것을 포함하여) 이러한 방법은 완전하지 않습니다.

가장 좋은 방법은 junidecode를 사용하는 것입니다. 라이브러리를 라이브러리 완전 할 수는 없지만 유니 코드를 ASCII로 음역하는 가장 건전한 방법으로 많은 경험을 통합합니다.


답변

String s = "ASCII Text";
byte[] bytes = s.getBytes("US-ASCII");


답변

Android에서이 기능이 필요하고 FroYo 이전 버전에서 작동하도록하려면 EncodingUtils.getAsciiBytes () 사용할 수도 있습니다 .

byte[] bytes = EncodingUtils.getAsciiBytes("ASCII Text");


답변

내 문자열에는 태국 문자 (TIS620 인코딩)와 독일어 움라우트가 있습니다. 애 질스의 대답은 저를 올바른 길로 인도했습니다. .getBytes () 대신 지금 사용합니다.

  int len = mString.length(); // Length of the string
  byte[] dataset = new byte[len];
  for (int i = 0; i < len; ++i) {
     char c = mString.charAt(i);
     dataset[i]= (byte) c;
  }