Конвертировать Unicode в ASCII в JavaScript - PullRequest
0 голосов
/ 24 октября 2019

В c # у меня есть ö ASCII символ 148. но когда я изменяю как

 char convstr = (char)148;

, возвращается \u0094. Это "”". Его код Unicode.

Если я хочу вернуть код ASCII, я просто использую Strings.Asc("”"). Он вернется к 148.

Итак, как мне перейти от "" "к 148 в JavaScript?

Я пытался вот так =>

"”".charCodeAt(0) но возвращаем 8221. Я думаю, что это Unicode.

И если вы не возражаете, пожалуйста, объясните мне, почему char convstr = (char)148; верните \u0094 также. Я тоже застрял там.

================================

1 Ответ

1 голос
/ 24 октября 2019

148 не является значением для ö в ASCII (то есть для 7-битной американской кодировки ASCII, которая идет только до 127) или для кодированных страниц, обычно называемых ASCII, 1252 (Windows Latin1) и ИСО / МЭК 8859-1 . 1252 имеет в этом месте, а в кодовой странице ISO ничего нет. Это значение используется только для ö в старых кодовых страницах DOS, 437 и 865.

Windows, .NET и C # строки изначально являются Unicode. Эти страницы подтверждают это - StackOverflow является сайтом ASP.NET. Вы можете легко преобразовать данные в кодировки, отличные от Unicode, либо с помощью класса Encoding, либо указав кодировку при загрузке данных из потоков с помощью StreamReader.

Например, это преобразует значение байта 148 в ö с использованием кодовой страницы 437:

var result=Encoding.GetEncoding(437).GetString(new byte[]{148});
Debug.Assert(result=="ö");

В то время как это возвращает :

var result=Encoding.GetEncoding(1252).GetString(new byte[]{148});

Перегрузка StreamReader (string, Encoding) и ее варианты могут загружать данные из файлов с использованием указанной кодировки, например:

using(var reader=new StreamReader(path,Encoding.GetEncoding(437)))
{
    var line=reader.ReadLine();
    ....
}  
...