Module encodings

Converts between different character encodings. On UNIX, this uses the iconv library, on Windows the Windows API.


os, parseutils, strutils


EncodingConverter = object
  dest, src: CodePage
EncodingError = object of ValueError
exception that is raised for encoding errors


proc getCurrentEncoding(): string {.raises: [], tags: [].}
retrieves the current encoding. On Unix, always "UTF-8" is returned.
proc open(destEncoding = "UTF-8"; srcEncoding = "CP1252"): EncodingConverter {.
    raises: [OverflowError, EncodingError], tags: [].}
opens a converter that can convert from srcEncoding to destEncoding. Raises EIO if it cannot fulfill the request.
proc close(c: EncodingConverter) {.raises: [], tags: [].}
frees the resources the converter c holds.
proc convert(c: EncodingConverter; s: string): string {.raises: [OSError], tags: [].}
converts s to destEncoding that was given to the converter c. It assumed that s is in srcEncoding.
proc convert(s: string; destEncoding = "UTF-8"; srcEncoding = "CP1252"): string {.
    raises: [OverflowError, EncodingError, OSError], tags: [].}
converts s to destEncoding. It assumed that s is in srcEncoding. This opens a converter, uses it and closes it again and is thus more convienent but also likely less efficient than re-using a converter.

© 2006–2017 Andreas Rumpf
Licensed under the MIT License.