찾다
JavaJava베이스Java에서 byte[]를 문자열로 변환할 때 잘못된 문자가 나타납니다.

Java에서 byte[]를 문자열로 변환할 때 잘못된 문자가 나타납니다.

우선 일반적으로 사용되는 byte[]를 문자열로 직접 변환하는 방법은 매우 간단합니다:

public static void main(String[] args) {  
String str="我是中国人";  
byte[] arr=str.getBytes();  
System.out.println("打印:"+arr);
for(byte e : arr) {
System.out.print(e + " ");
}
String str2=new String(arr);  
System.out.println("\n打印2:"+str2);  
}

java 관련 영상 추천: javalearning#🎜 🎜#

예를 들어 출력 결과는 다음과 같습니다.

打印:[B@15db9742
-50 -46 -54 -57 -42 -48 -71 -6 -56 -53 
打印2:我是中国人

이 내용을 보면 인코딩을 알 수 있습니다. 바이트는 1바이트이고, 한자는 2바이트입니다. 따라서 5개의 한자에는 10바이트 형태의 디지털 저장이 필요합니다. 그러면 숫자가 한자로 바뀌고, 중간에 표준을 코딩하는 과정이 있습니다.

그럼 Java에서는 문자 인코딩이 어떻게 처리되나요?

JAVA는 자체 String 클래스를 사용하므로 String 클래스 객체는 인코딩 테이블을 지정할 필요가 없습니다! 숫자 묶음 각각이 어떤 문자를 나타내는지 아는 이유는 무엇입니까? 이는 String의 문자 정보가 UNICODE 인코딩으로 저장되기 때문입니다. 문자(단일 문자임을 참고)를 표현하기 위해 JAVA도 char 데이터 유형을 가지며, 크기는 8자리 16진수 두 자리, 즉 0~65535의 고정 길이입니다. 목적은 UNICODE의 문자에 대응하는 것입니다.

문자열에서 유니코드 번호를 얻으려면

메소드를 사용하여 char[]를 얻을 수 있습니다. 이 char[]는 유니코드에 따라 인코딩된 문자열 문자를 나타냅니다. 인코딩 테이블 번호. getChars(int srcBegin, int srcEnd, char[] dst, int dstBegin)

바이트[ ]를 문자열로 변환할 때 잘못된 코드가 나타나는 이유는 무엇인가요?

분명히 위에서 언급한 것처럼 코딩 기준이 다릅니다. 예를 들어, GB2312 표준의 중국어 단어 "dang"은 두 개의 8자리 숫자 0xB5 및 0xB1로 표시됩니다. 영어 시스템에는 GB2312 인코딩 테이블이 없습니다. 0xB5, 0xB1을 지정하면 ASCII로 처리됩니다. 자바에 넣으면 자체 UNICODE 사양에 따라 처리하기 때문에 사양이 다르면 이상한 결과, 즉 문자가 깨지는 현상이 나타납니다.

그럼 byte[]를 문자열로 변환하는 잘못된 문제를 어떻게 해결합니까?

byte[]의 출처에 따라 다릅니다. 그림을 byte[]로 변환한 다음 다른 위치로 전송하기 위해 String 스트림 객체로 변환해야 하는 경우가 종종 있습니다. 그런 다음 수신자는 이를 byte[]로 변환한 다음 그림으로 변환합니다.

1. byte[]를 직접 전송하는 경우 byte[]가 너무 길면 데이터 손실이 발생합니다. 모든 바이트 조합이 char에 매핑될 수 있는 것은 아니기 때문입니다.

2. 일반적인 Base64 인코딩 사양을 사용하세요. base64의 인코딩 사양은 일반 문자를 6비트 바이너리 표현으로 변환하는 것입니다(64가 일반적으로 사용되므로 base64라고 합니다). 작성 방법에는 다음과 같이 미리 만들어진 도구 클래스가 있습니다:

import org.apache.commons.codec.binary.Base64;  
public class UtilHelper {     
    //base64字符串转byte[]  
    public static byte[] base64String2ByteFun(String base64Str){  
        return Base64.decodeBase64(base64Str);  
    }  
    //byte[]转base64  
    public static String byte2Base64StringFun(byte[] b){  
        return Base64.encodeBase64String(b);  
    }  
}

이렇게 하면 byte[]와 문자열 간의 표준 변환을 보장할 수 있습니다.

추가 관련 기사 튜토리얼 권장사항:

java 0 기반 항목

위 내용은 Java에서 byte[]를 문자열로 변환할 때 잘못된 문자가 나타납니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

AI Hentai를 무료로 생성하십시오.

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
4 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
1 몇 달 전By尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

SecList

SecList

SecLists는 최고의 보안 테스터의 동반자입니다. 보안 평가 시 자주 사용되는 다양한 유형의 목록을 한 곳에 모아 놓은 것입니다. SecLists는 보안 테스터에게 필요할 수 있는 모든 목록을 편리하게 제공하여 보안 테스트를 더욱 효율적이고 생산적으로 만드는 데 도움이 됩니다. 목록 유형에는 사용자 이름, 비밀번호, URL, 퍼징 페이로드, 민감한 데이터 패턴, 웹 셸 등이 포함됩니다. 테스터는 이 저장소를 새로운 테스트 시스템으로 간단히 가져올 수 있으며 필요한 모든 유형의 목록에 액세스할 수 있습니다.

Atom Editor Mac 버전 다운로드

Atom Editor Mac 버전 다운로드

가장 인기 있는 오픈 소스 편집기

DVWA

DVWA

DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는

mPDF

mPDF

mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse용 SAP NetWeaver 서버 어댑터

Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.