itsource

문자열을 UTF-8로 인코딩

mycopycode 2022. 8. 30. 22:27
반응형

문자열을 UTF-8로 인코딩

'"'자를 가진 문자열이 있는데 문제가 좀 있어요이 String을 UTF-8 인코딩으로 인코딩해야 합니다.이 방법으로 시도했지만 작동하지 않습니다.

byte ptext[] = myString.getBytes();
String value = new String(ptext, "UTF-8");

이 문자열을 utf-8로 인코딩하려면 어떻게 해야 하나요?

를 사용하는 것은 어떻습니까?

ByteBuffer byteBuffer = StandardCharsets.UTF_8.encode(myString)

StringJava* 오브젝트는 변경할 수 없는 UTF-16 인코딩을 사용합니다.

다른 인코딩을 가질 수 있는 것은byte[]UTF-8 데이터가 필요한 경우,byte[]를 가지고 있는 경우String예기치 않은 데이터가 포함되어 있는 경우, 문제는 일부 바이너리 데이터를 잘못 변환한 이전 장소에 있습니다.String(즉, 잘못된 인코딩을 사용하고 있었습니다).

* 구현의 문제로서StringISO-8859-1 인코딩은 문자 범위가 적합할 때 내부적으로 사용할 수 있지만, 이는 구현 고유의 최적화로 사용자에게는 보이지 않습니다.String(즉, 소스 코드를 파헤치거나 반사를 사용하여 파일을 파헤치지 않으면 알 수 없습니다.String오브젝트)

Java7에서는 다음을 사용할 수 있습니다.

import static java.nio.charset.StandardCharsets.*;

byte[] ptext = myString.getBytes(ISO_8859_1); 
String value = new String(ptext, UTF_8); 

이것은 보다 유리하다.getBytes(String)선언하지 않는 것throws UnsupportedEncodingException.

오래된 Java 버전을 사용하는 경우 charset 상수를 직접 선언할 수 있습니다.

import java.nio.charset.Charset;

public class StandardCharsets {
    public static final Charset ISO_8859_1 = Charset.forName("ISO-8859-1");
    public static final Charset UTF_8 = Charset.forName("UTF-8");
    //....
}

사용하다byte[] ptext = String.getBytes("UTF-8");대신getBytes().getBytes()는 UTF-8이 아닌 이른바 '디폴트 부호화'를 사용합니다.

Java String은 내부적으로는 항상 UTF-16으로 부호화되어 있습니다만, 부호화는 문자열과 바이트를 변환하는 방법입니다.

따라서 인코딩에 문제가 있는 경우 String을 사용할 때 수정하기에는 너무 늦습니다.파일, DB 또는 네트워크 연결에서 문자열을 작성하는 위치를 수정해야 합니다.

이렇게 하면 돼요.

byte ptext[] = myString.getBytes("ISO-8859-1"); 
String value = new String(ptext, "UTF-8"); 

잠시 후 나는 이 문제를 겪고 다음과 같은 방법으로 해결할 수 있었다.

먼저 수입해야 합니다.

import java.nio.charset.Charset;

그리고 상수를 선언해야 했다.UTF-8그리고.ISO-8859-1

private static final Charset UTF_8 = Charset.forName("UTF-8");
private static final Charset ISO = Charset.forName("ISO-8859-1");

그러면 다음과 같은 방법으로 사용할 수 있습니다.

String textwithaccent="Thís ís a text with accent";
String textwithletter="Ñandú";

text1 = new String(textwithaccent.getBytes(ISO), UTF_8);
text2 = new String(textwithletter.getBytes(ISO),UTF_8);
String value = new String(myString.getBytes("UTF-8"));

ISO-8859-1로 인코딩된 텍스트 파일에서 읽기를 원하는 경우:

String line;
String f = "C:\\MyPath\\MyFile.txt";
try {
    BufferedReader br = Files.newBufferedReader(Paths.get(f), Charset.forName("ISO-8859-1"));
    while ((line = br.readLine()) != null) {
        System.out.println(new String(line.getBytes("UTF-8")));
    }
} catch (IOException ex) {
    //...
}

인코딩 형식을 지정하여 특수 문자를 인코딩하기 위해 아래 코드를 사용합니다.

String text = "This is an example é";
byte[] byteText = text.getBytes(Charset.forName("UTF-8"));
//To get original string from byte.
String originalString= new String(byteText , "UTF-8");

NetBeans 기본 인코딩 UTF-8을 설정하는 간단한 절차 안내서입니다. 그 결과 NetBeans는 UTF-8 인코딩으로 모든 새 파일을 만듭니다.

NetBeans 디폴트 부호화 UTF-8 스텝바이 스텝가이드

  • NetBeans 설치 디렉토리의 etc 폴더로 이동합니다.

  • netbeans.conf 파일 편집

  • netbeans_default_options 행을 찾습니다.

  • -J-Dfile.encoding= 추가UTF-8 안쪽 따옴표

    (필수:netbeans_default_options="-J-Dfile.encoding=UTF-8")

  • NetBeans 재시작

NetBeans 디폴트 부호화는 UTF-8 로 설정합니다.

netbeans_default_options에서는 따옴표 안에 추가 파라미터를 포함할 수 있습니다.이 경우 -J-Dfile.encoding=을 추가합니다.문자열 끝에 UTF-8이 있습니다.다른 파라미터와 공백으로 구분합니다.

예:

netbeans_default_options="-J-client -J-Xss128m -J-Xms256m -J-XX:PermSize=32m -J-Dapple.laf.useScreenMenuBar=true -J-Dapple.awt.그래픽스Quartz=true -J-Dsun.java2d.noddraw=true -J-Dsun.java2d.dpiaware=true -J-Dsun.zip.disableMemoryMapping=true -J-Dfile.encoding=을 사용합니다.UTF-8인치

자세한 내용은 이쪽 링크입니다.

이것으로 문제가 해결되었다

    String inputText = "some text with escaped chars"
    InputStream is = new ByteArrayInputStream(inputText.getBytes("UTF-8"));

언급URL : https://stackoverflow.com/questions/5729806/encode-string-to-utf-8

반응형