Spec-Zone.ru › Nim

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

Типы

EncodingConverter = object
Source Edit
EncodingError = object of ValueError
Исключение, которое генерируется при ошибках кодирования. Source Edit

Процедуры

proc close(c: EncodingConverter) {....raises: [], tags: [], forbids: [].}
Освобождает ресурсы, которые конвертер c удерживает. Source Edit
proc codePageToName(c: CodePage): string {....raises: [], tags: [], forbids: [].}
Source Edit
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 nameToCodePage(name: string): CodePage {....raises: [ValueError], tags: [],
    forbids: [].}
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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API