레코드 집합을 xml로 내 보낸 다음 xslt 변환을 통해 xliff로 내보내는 중입니다. 내보내기가 잘 작동하지만 내보내기 파일에서 일부 문자를 변환하지 못했습니다. 여기에 단계별 세부 사항이 나와 있습니다.php XSLTProcessor를 사용하는 XML/XSLT 출력 인코딩 문제
1 단계. 문자열 다음 Autocomplete On' see the wrong character ==> í
MySQL의 DB/테이블 필드 인코딩은 상기 텍스트 저장 UTF8 예컨대
`unicode longtext COLLATE utf8_unicode_ci`
설정된다. 사용하여 XSLT 변환 :
(만 붙여
단계 2. HTML 코드는
<?xml version="1.0" standalone="yes"?>
<html version="1.2"><body><table><tr><td id="Autocomplete_On">
Autocomplete On' see the wrong character ==> í</td>
</tr></table></body></html>
4 단계 XML로 수출 목적의 예
<html version="1.2">
<table>
<tr>
<td id="Autocomplete_On">Autocomplete On' see the wrong character ==> í</td>
</tr>
</table>
</html>
3 단계 변환 생성됩니다 브라우저에서 보았을 때 출력의 원하는 부분을 보았습니다. 실제 문자는 Ã
입니다.
<body>
<group id="id796986axmarkhtml-0">
<group id="id533787bxmarkbody-1">
<group id="id533788bxmarktable-2">
<group id="id533790bxmarktr-3">
<trans-unit id="td-4">
<source>Autocomplete On' see the wrong character ==> ÃÂ</source>
<target>Autocomplete On' see the wrong character ==> ÃÂ</target>
</trans-unit>
</group>
</group>
</group>
</group>
</body>
실제 코드 :
private function xml2xliff($htmlStr,$source,$target){
$xml=new \DOMDocument();
//hacky way to tidy html
@$xml->loadHTML($htmlStr);//step 3
$xsl = new \DOMDocument;
$xsl->load(__DIR__.'/xliff/xsl/xml2xliff.xsl');
$proc = new \XSLTProcessor();
$proc->ImportStyleSheet($xsl);
$proc->setParameter('', 'source', $this->getIsoName($source));
$proc->setParameter('', 'target', $this->getIsoName($target));
return $proc->transformToXML($xml); //step 4
}
$ htmlStr 2 단계에서 생성 된 HTML 코드 조각이다,
그래서 문제는 문자열이 두 번 변환되는 것입니다. 고려 실제 문자는 í
단계 3. 4. ÃÂ
또 다른 예로 변환, 즉 í
단계 A를 변환 여전히
1 단계 í
2 단계입니다 :
입력. Autocomplete On They’re gone now
xml 출력. Autocomplete On Theyâre gone now
덕분에, 내가 다른 인코딩 예를 들어, 아포스트로피 문자로 무슨 일이 일어날 지 궁금 예를 들어'Autocomplete On On they they 're now now '에서. – sakhunzai
왜 그것의 추가? xml encoding = "UTF-8"??>'이중 인용 부호 – sakhunzai