Konvertieren von integer-array zu string in javascript
Hier wird php-code:
$arr=array(228,184,173,230,150,135,99,104,105,110,101,115,101);
$str='';
foreach ($arr as $i){
$str.=chr($i);
}
print $str;
Ausgabe: 中文chinese
Hier ist der javascript-code:
var arr=[228,184,173,230,150,135,99,104,105,110,101,115,101];
var str='';
for (i in arr){
str+=String.fromCharCode(arr[i]);
}
console.log(str);
Ausgabe: ä¸æchinese
So, wie sollte ich den array an javascript?
- Wenn ich den PHP-code, bekomme ich die Ausgabe
ä¸æ–‡chinese
. Gibt es etwas besonderes über Ihre PHP-Konfiguration? - Ich bekomme genau die gleiche Ausgabe wie @Stegrex
- Vielleicht ist es das problem der locale-Einstellung. Sie könnten versuchen, zu stornieren Kommentar
zh_CN.XXX
bei/etc/locale.gen
- Ich bin mir nicht sicher, wie es funktioniert in Ihrem PHP-code. Aber für javascript die richtige array [20013,25991,99,104,105,110,101,115,101]
- Sie sehen, es sind in ASCII. Interpretieren es als UTF-8.
- 0DEFACED, fügen Sie diese Zeile vor dem drucken:
header('Content-type:text/html; charset=UTF-8')
. Öffnen Sie es mit einem richtigen browser.
Du musst angemeldet sein, um einen Kommentar abzugeben.
JavaScript-strings bestehen aus UTF-16 code-Einheiten, doch sind die zahlen im array sind die bytes einer UTF-8 string. Hier ist ein Weg, um konvertieren Sie die Zeichenfolge, die verwendet die decodeURIComponent() Funktion:
Durchführung der UTF-8 in UTF-16-Konvertierung in der herkömmlichen Art und Weise ist wahrscheinlich effizienter, würde aber erfordern mehr code.
URIError: URI malformed
wird das Ergebnis
['3','5','7','9']
wird das Ergebnis
[3,5,7,9]
Andere Lösung ohne
decodeURIComponent
für Zeichen bis zu 3 Byte, (U+FFFF).Die Funktion setzt den string gültiges UTF-8, nicht viel Fehler überprüfen...
Chinesischen Zeichensatz hat eine andere Codierung, in denen ein char mehr als ein byte lang ist. Wenn Sie dies tun
Die Sie konvertieren jedes byte für eine char(eigentlich Zeichenfolge) und hinzufügen, um einen string str.
Was Sie tun müssen ist, packen Sie die bytes zusammen.
Änderte ich das array an und es funktionierte für mich:
Bekam ich diese codes von hier.
können Sie auch einen Blick auf diese für die Verpackung bytes zu einem string.
Scheint der beste Weg, in diesen Tagen ist die folgende: