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;
}