나는 php와 javascript 모두에서 문자열을 처리하려고하고 있으며, 같은 동작을 원한다. 나는 이것을 구현하기 위해 php chr() 함수의 자바 스크립트 버전을 작성했다. 그러나 나는 uft-8 유니 코드 문제를 겪는다. 예를 들어, "a small b"한자를 사용하여 PHP에서 올바르게 수행 할 수 있지만 아래 코드를 사용하여 javascipt에서 실패하는 문자열을 만들려고합니다. 구현에 무엇이 잘못된 것인지 전문가에게 묻고 싶습니다.자바 스크립트 유니 코드 문자열을 PHP로 처리하는 방법은 무엇입니까?
출력은 다음과 같습니다 : 내가 사용
php str=a----
php str=a�----
php str=a��----
php str=a大----
php str=a大�----
php str=a大��----
php str=a大小----
php str=a大小b----
--------
js str=a---
js str=aå---
js str=aå¤---
js str=a大---
js str=a大å---
js str=a大å°---
js str=a大å°---
js str=a大å°b---
코드는 다음과 같습니다
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>
<body>
<div class="container">
<?php
$string5 = "" ;
$str_a = chr(97) ;
$string5 .= $str_a ; echo "php str=$string5----<br>" ;
$str_c1 = chr(229) ;
$string5 .= $str_c1 ; echo "php str=$string5----<br>" ;
$str_c2 = chr(164) ;
$string5 .= $str_c2 ; echo "php str=$string5----<br>" ;
$str_c3 = chr(167) ;
$string5 .= $str_c3 ; echo "php str=$string5----<br>" ;
$str_cs1 = chr(229) ;
$string5 .= $str_cs1 ; echo "php str=$string5----<br>" ;
$str_cs2 = chr(176) ;
$string5 .= $str_cs2 ; echo "php str=$string5----<br>" ;
$str_cs3 = chr(143) ;
$string5 .= $str_cs3 ; echo "php str=$string5----<br>" ;
$str_b= chr(98) ;
$string5 .= $str_b ; echo "php str=$string5----<br>" ;
echo "<br><br>--------<br><br>" ;
?>
<script language = "JavaScript">
function chr2(codePt) {
if (codePt > 0xFFFF) {
codePt -= 0x10000;
return String.fromCharCode(0xD800 + (codePt >> 10), 0xDC00 + (codePt & 0x3FF));
}
return String.fromCharCode(codePt);
}
var string5 = "" ;
var str_a = chr2(97) ;
string5 += str_a ; document.write("js str="+string5+"---<br>" );
var str_c1 = chr2(229) ;
string5 += str_c1 ; document.write("js str="+string5+"---<br>" );
var str_c2 = chr2(164) ;
string5 += str_c2 ; document.write("js str="+string5+"---<br>" );
var str_c3 = chr2(167) ;
string5 += str_c3 ; document.write("js str="+string5+"---<br>" );
var str_cs1 = chr2(229) ;
string5 += str_cs1 ; document.write("js str="+string5+"---<br>" );
var str_cs2 = chr2(176) ;
string5 += str_cs2 ; document.write("js str="+string5+"---<br>" );
var str_cs3 = chr2(143) ;
string5 += str_cs3 ; document.write("js str="+string5+"---<br>" );
var str_b = chr2(98) ;
string5 += str_b ; document.write("js str="+string5+"---<br>" );
</script>
</div>
</body>
</html
유익한 답변을 보내 주셔서 감사합니다. 웬일인지, 나는 자바 스크립트에서 문자열을 쪼개고 uincode 문자열을 되 찾아야한다. Javascript chr2() 함수 또는 js 코드를 수정하려면 어떻게해야합니까? – user2818066
JavaScript 문자열 *은 유니 코드 문자열입니다. 그것은 유니 코드가 아닌 일련의 바이트 인 PHP 문자열입니다. JavaScript 문자열은 개별 바이트를 보유 할 수 없습니다. 'charCodeAt'가 UTF-8 바이트 단위를 나타내는 mangled (mojibake) 문자열을 얻고 싶다면'unescape (encodeURIComponent (s))'라는 관용적 인 트릭이 있습니다. 하지만 클라이언트 쪽에서 바이트를 만지는 일은 거의 없습니다. 브라우저는 유니 코드 중심 환경입니다. – bobince
나는이 unicode 및 utf-8 문제에 새로운입니다. encodeURICompoent (s)를 사용하여 분할 된 유니 코드 단어를 연결하는 힌트를 얻을 수 없습니다. 이 개념을 사용하여 위의 코드를 변경하고 위의 Javascipt 코드에서 "a small b"문자열을 복구하는 방법. 감사! – user2818066