2017-02-23 32 views
2

我在荷蘭語中使用了一些字符串。我知道如何使用PHP對它們進行編碼使用JS將Windows-1252轉換爲UTF-8

$str = iconv("Windows-1252", "UTF-8", $str); 

Javascript中的等效內容是什麼?

+2

我很想看看這是JS – evolutionxbox

+0

@evolutionxbox的事情。我也是。 –

+0

因爲我沒有得到任何迴應,所以我想到使用AJAX進行轉換,但仍然存在問題。所以,如果有人正在閱讀這可能是你可以看到我的新問題http://stackoverflow.com/questions/42432964/character-conversion-working-different-for-fgetcsv-and-jquery-get-with-ajax –

回答

2

Windows-1252是一個單字節編碼,非常方便:您可以構建一個查找表。

<?php 
$s = ''; 

for ($i = 0; $i < 256; $i++) { 
    $converted = iconv('Windows-1252', 'UTF-8', chr($i)); 

    if ($converted === false) { 
     $s .= "\xef\xbf\xbd"; # UTF-8 replacement character 
    } else { 
     $s .= $converted; 
    } 
} 

echo $s; 

假設你想有一個常規的JavaScript字符串作爲結果(而不是UTF-8)和輸入是每個字符的Unicode代碼點實際上代表一個Windows 1252一個字符串,結果表中可以讀爲UTF-8,放在一個JavaScript字符串中,就萬事大吉了:

var WINDOWS_1252 = '\u0000\u0001\u0002\u0003\u0004\u0005\u0006\u0007\b\t\n\u000b\f\r\u000e\u000f\u0010\u0011\u0012\u0013\u0014\u0015\u0016\u0017\u0018\u0019\u001a\u001b\u001c\u001d\u001e\u001f !"#$%&\'()*+,-./:;<=>[email protected][\\]^_`abcdefghijklmnopqrstuvwxyz{|}~€�‚ƒ„…†‡ˆ‰Š‹Œ�Ž��‘’「」•–—˜™š›œ�žŸ ¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖ×ØÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ'; 

function fromWindows1252(binaryString) { 
    var text = ''; 

    for (var i = 0; i < binaryString.length; i++) { 
     text += WINDOWS_1252.charAt(binaryString.charCodeAt(i)); 
    } 

    return text; 
} 
+0

謝謝爲你的答案。我完全無法理解它。爲了最好地解釋我的問題,我創建了一個新問題。也許你可以看看這裏http://stackoverflow.com/questions/42432964/convert-windows-1252-to-utf-8-with-ajax –

+0

@KiranDash:爲什麼不用CSV編碼UTF-8與您的原始'iconv'?這樣你只需要往返服務器一次。 – Ryan