Вынудите C# использовать ASCII

Интересно об этом определенном много.

Connection con = DriverManager.getConnection(url, "***", "***");

try {
    PreparedStatement pStmt = con.prepareStatement("your query here");

    ... // query the database and get the results
}
catch(ClassNotFoundException cnfe) {
    // real exception handling goes here
}
catch(SQLException sqle) {
    // real exception handling goes here
}
finally {
    try {
        con.close();
    }
    catch {
        // What do you do here?
    }
}

я никогда не знаю, что сделать в той последней выгоде в наконец блок. Я никогда не видел близко (), выдают исключение прежде, и настолько маловероятно, что я не волнуюсь об этом. Я просто регистрирую исключение и иду дальше.

5
задан John Saunders 11 March 2014 в 22:07
поделиться

4 ответа

C # (.NET) всегда будет использовать Unicode для строк. Это сделано намеренно.

Однако, когда вы читаете или записываете в свой файл, вы можете использовать StreamReader / StreamWriter, настроенный для принудительного кодирования ASCII, например:

StreamReader reader = new StreamReader (fileStream, new ASCIIEncoding());

Затем просто прочитайте с помощью StreamReader.

Запись - это то же самое, просто используйте StreamWriter.

24
ответ дан 18 December 2019 в 05:36
поделиться

Если вы хотите это в .NET , вы можете использовать F # для создания библиотеки, поддерживающей это. F # поддерживает строки ASCII с байтовым массивом в качестве базового типа, см. Literals (F #) (MSDN):

let asciiString = "This is a string"B
0
ответ дан 18 December 2019 в 05:36
поделиться

Внутренние строки в .NET всегда являются Unicode, но на самом деле это не должно вас интересовать. Если у вас есть определенный формат, которого вы должны придерживаться, значит, маршрут, по которому вы пошли (читая его как байты), был правильным. Вам просто нужно использовать System.Encoding.

5
ответ дан 18 December 2019 в 05:36
поделиться

Если у вас есть формат файла, который Смешивает текст в однобайтовых символах с двоичными значениями, такими как длины, управляющие символы, хорошая кодировка для использования ISKA Page 28591 AKA Latin1 AKA ISO-8859-1.

Вы можете получить это кодирование, используя то, что из следующего является наиболее читабельным:

Encoding.GetEncoding(28591) 
Encoding.GetEncoding("Latin1")
Encoding.GetEncoding("ISO-8859-1")

это кодирование имеет полезную характеристику, что значения байтов до 255 преобразуются для без изменений в символ Unicode с тем же значением (например, BYTE 0x80 становится символом 0x0080).

В вашем сценарии это может быть более полезно, чем кодировка ASCII (который преобразует значения в диапазоне 0x80 до 0xFF, чтобы «?») Или любой другой обычные кодировки, которые также будут преобразовывать некоторые символы в этом диапазоне Отказ

3
ответ дан 18 December 2019 в 05:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: