이름 표시시 문제가 발생합니다. 내 응용 프로그램은 PHP, Perl 및 BI Pentaho에 대해 서로 다른 기술을 사용합니다.값을 UTF-8로 변환 할 때의 문제
우리는 DB로 MYSQL을 사용하고 나의 테이블은 CHARSET=utf8
입니다.
Row1 = Ãx—350
Row2 = Ñz–401
PHP와 펄이 DB에 저장되어있는 위의 값을 변환하는 내장 기능에 다른를 사용하는 잘못되는 아래와 같은 행에 값으로 저장되어 있으며이 UI에 표시됩니다
이는 다음과 같이 내가 보고서에 데이터를 표시하기 전에 데이터를 변환하는 ETL을 사용하고 펜타을 사용하는 보고서에 오는
Expected Row1 = Áx—350
Expected Row2 = Ñz–401
올바른 것입니다. 는 위의 2 개 잘못된 값 사이에서 제대로 값을 변환하지 않는 내가
new java.lang.String(new java.lang.String(CODE).getBytes("Windows-1252"), "UTF-8")
다음과 같이 자바 단계를 통해 데이터를 변환하려고 위의 DB 저장 값을 변환 그러나하기 위해 단지 행 2 값이되어있다 제대로 변환하지만 첫 번째 ROW1 잘못 다음과 같이 변환됩니다
Converted Row1 = �?x—350
Converted Row2 = Ñz–401
예를 들어 ROW1 값이 적절한 변환해야합니다 있도록 내가 제대로 값을 변환 할 수있는 방법을 제안하십시오 ~ Áx-350.
은 내가 AXA € "350 문자열 AX-350String input = "Ãx—350";
byte[] b1 = input.getBytes("Windows-1252");
System.out.println("Input Get Bytes = "+b1.toString());
String szUT8 = new String(b1, "UTF-8");
System.out.println("Input Encoded = " + szUT8);
을 위의 코드의 출력은 다음과 같습니다 변환 아래 작은 자바 프로그램을 작성
Input Get Bytes = [[email protected]
Input Encoded = �?x—350-350—É1
출력을 보면 실제 예상 출력이 Áx-350 인 문자열이 잘못되었습니다.
은 부호화/복호화 방식에 제가 테스트 문자열 online 시도 문자열 악사 € "350 시험 출력이 정확한지 AX-350 예상 될 때를 확인한다.그래서 자바 코드가 올바르게 인코딩/디코딩 스키마를 사용하고 있지만, 자바 코드가 제대로 변환되지 않는 것을 지적하십시오. 누락 된 항목이나 내 접근 방식이 잘못되었습니다.
실제 기대 값은 무엇입니까? "α-350"? UTF-8을 올바르게 처리하지 못합니다. 먼저 http://stackoverflow.com/q/279170/476과 [웹 응용 프로그램에서 유니 코드 앞뒤로 처리하기] (http://kunststube.net/frontback/)를 참조하십시오. – deceze
감사합니다 @deceze, 예 예상 값은 Áx-350 – Yog
당신이 변환하는 데 사용하는 코드는 JavaScript가 아니고 Java입니까? – beasy