문자열을 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)
String
Java* 오브젝트는 변경할 수 없는 UTF-16 인코딩을 사용합니다.
다른 인코딩을 가질 수 있는 것은byte[]
UTF-8 데이터가 필요한 경우,byte[]
를 가지고 있는 경우String
예기치 않은 데이터가 포함되어 있는 경우, 문제는 일부 바이너리 데이터를 잘못 변환한 이전 장소에 있습니다.String
(즉, 잘못된 인코딩을 사용하고 있었습니다).
* 구현의 문제로서String
ISO-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
'itsource' 카테고리의 다른 글
입력 Vuej의 소수점 수 제한 (0) | 2022.08.30 |
---|---|
VueJs에서 특정 경로 데이터를 경로 이름으로 가져오려면 어떻게 해야 합니까? (0) | 2022.08.30 |
변수를 기반으로 이벤트를 프로그래밍 방식으로 추가하려면 어떻게 해야 합니까? (0) | 2022.08.29 |
다른 포트에서 제공되는 Vue 앱과 함께 로컬 API를 사용하는 방법 (0) | 2022.08.29 |
Vue js에서 추적 기준 또는 v-for의 키는 어떤 용도로 사용됩니까? (0) | 2022.08.29 |