This commit is contained in:
parent
6b40114f21
commit
2e6d073be1
2 changed files with 25 additions and 4 deletions
|
|
@ -332,7 +332,7 @@ when defined(windows):
|
||||||
if s.len == 0: return ""
|
if s.len == 0: return ""
|
||||||
# educated guess of capacity:
|
# educated guess of capacity:
|
||||||
var cap = s.len + s.len shr 2
|
var cap = s.len + s.len shr 2
|
||||||
result = newStringOfCap(cap*2)
|
result = newString(cap*2)
|
||||||
# convert to utf-16 LE
|
# convert to utf-16 LE
|
||||||
var m = multiByteToWideChar(codePage = c.src, dwFlags = 0'i32,
|
var m = multiByteToWideChar(codePage = c.src, dwFlags = 0'i32,
|
||||||
lpMultiByteStr = cstring(s),
|
lpMultiByteStr = cstring(s),
|
||||||
|
|
@ -347,7 +347,7 @@ when defined(windows):
|
||||||
lpWideCharStr = nil,
|
lpWideCharStr = nil,
|
||||||
cchWideChar = cint(0))
|
cchWideChar = cint(0))
|
||||||
# and do the conversion properly:
|
# and do the conversion properly:
|
||||||
result = newStringOfCap(cap*2)
|
result = newString(cap*2)
|
||||||
m = multiByteToWideChar(codePage = c.src, dwFlags = 0'i32,
|
m = multiByteToWideChar(codePage = c.src, dwFlags = 0'i32,
|
||||||
lpMultiByteStr = cstring(s),
|
lpMultiByteStr = cstring(s),
|
||||||
cbMultiByte = cint(s.len),
|
cbMultiByte = cint(s.len),
|
||||||
|
|
@ -364,7 +364,7 @@ when defined(windows):
|
||||||
if int(c.dest) == 1200: return
|
if int(c.dest) == 1200: return
|
||||||
# otherwise the fun starts again:
|
# otherwise the fun starts again:
|
||||||
cap = s.len + s.len shr 2
|
cap = s.len + s.len shr 2
|
||||||
var res = newStringOfCap(cap)
|
var res = newString(cap)
|
||||||
m = wideCharToMultiByte(
|
m = wideCharToMultiByte(
|
||||||
codePage = c.dest,
|
codePage = c.dest,
|
||||||
dwFlags = 0'i32,
|
dwFlags = 0'i32,
|
||||||
|
|
@ -382,7 +382,7 @@ when defined(windows):
|
||||||
lpMultiByteStr = nil,
|
lpMultiByteStr = nil,
|
||||||
cbMultiByte = cint(0))
|
cbMultiByte = cint(0))
|
||||||
# and do the conversion properly:
|
# and do the conversion properly:
|
||||||
res = newStringOfCap(cap)
|
res = newString(cap)
|
||||||
m = wideCharToMultiByte(
|
m = wideCharToMultiByte(
|
||||||
codePage = c.dest,
|
codePage = c.dest,
|
||||||
dwFlags = 0'i32,
|
dwFlags = 0'i32,
|
||||||
|
|
|
||||||
21
tests/stdlib/tencoding.nim
Normal file
21
tests/stdlib/tencoding.nim
Normal file
|
|
@ -0,0 +1,21 @@
|
||||||
|
discard """
|
||||||
|
output: '''OK'''
|
||||||
|
"""
|
||||||
|
|
||||||
|
#bug #8468
|
||||||
|
|
||||||
|
import encodings, strutils
|
||||||
|
|
||||||
|
when defined(windows):
|
||||||
|
var utf16to8 = open(destEncoding = "utf-16", srcEncoding = "utf-8")
|
||||||
|
var s = "some string"
|
||||||
|
var c = utf16to8.convert(s)
|
||||||
|
|
||||||
|
var z = newStringOfCap(s.len * 2)
|
||||||
|
for x in s:
|
||||||
|
z.add x
|
||||||
|
z.add chr(0)
|
||||||
|
|
||||||
|
doAssert z == c
|
||||||
|
|
||||||
|
echo "OK"
|
||||||
Loading…
Add table
Add a link
Reference in a new issue