std/encodings
Source EditПроцедуры для преобразования между различными кодировками символов. В UNIX системах используется библиотека iconv, в Windows — API Windows.
Следующий пример демонстрирует, как изменить кодировку символов.
Пример:
import std/encodings
when defined(windows):
let
orig = "öäüß"
# convert `orig` from "UTF-8" to "CP1252"
cp1252 = convert(orig, "CP1252", "UTF-8")
# convert `cp1252` from "CP1252" to "ibm850"
ibm850 = convert(cp1252, "ibm850", "CP1252")
current = getCurrentEncoding()
assert orig == "\195\182\195\164\195\188\195\159"
assert ibm850 == "\148\132\129\225"
assert convert(ibm850, current, "ibm850") == origПример ниже использует переиспользуемый EncodingConverter объект, который создаётся с помощью open со значениями destEncoding и srcEncoding. Вы можете использовать convert на этом объекте несколько раз. Пример:
import std/encodings
when defined(windows):
var fromGB2312 = open("utf-8", "gb2312")
let first = "\203\173\197\194\163\191\210\187" &
"\203\242\209\204\211\234\200\206\198\189\201\250"
assert fromGB2312.convert(first) == "谁怕?一蓑烟雨任平生"
let second = "\211\208\176\215\205\183\200\231" &
"\208\194\163\172\199\227\184\199\200\231\185\202"
assert fromGB2312.convert(second) == "有白头如新,倾盖如故" Импорты
- os, parseutils, strutils
Типы
Процедуры
proc convert(c: EncodingConverter; s: string): string {. ...raises: [EncodingError, OSError], tags: [], forbids: [].}- Source Edit
proc convert(s: string; destEncoding = "UTF-8"; srcEncoding = "CP1252"): string {. ...raises: [ValueError, EncodingError, EncodingError, OSError], tags: [], forbids: [].}- Преобразует
sвdestEncoding. Предполагается, чтоsв кодировкеsrcEncoding. Это открывает преобразователь, использует его и снова закрывает, что более удобно, но вероятно менее эффективно, чем повторное использование преобразователя.Предупреждение: Преобразования UTF-16BE и UTF-32 не поддерживаются в Windows.Source Edit proc getCurrentEncoding(uiApp = false): string {....raises: [], tags: [], forbids: [].}- Возвращает текущую кодировку. В Unix всегда возвращается "UTF-8". Параметр
uiAppспецифичен для Windows. Если true, возвращается кодовая страница пользовательского интерфейса; если false, кодовая страница консоли. Source Edit proc open(destEncoding = "UTF-8"; srcEncoding = "CP1252"): EncodingConverter {. ...raises: [ValueError, EncodingError], tags: [], forbids: [].}- Открывает преобразователь, который может преобразовывать из
srcEncodingвdestEncoding. ВыбрасываетEncodingErrorесли запрос не может быть выполнен. Source Edit
© 2006–2024 Andreas Rumpf
Licensed under the MIT License.
https://nim-lang.org/docs/encodings.html