1 | Opt("MustDeclareVars", 1) |
---|
2 | |
---|
3 | Global $sResults |
---|
4 | |
---|
5 | $sResults &= UTFx_Test(True) ;## UTF-8 - Funky |
---|
6 | $sResults &= UTFx_Test(True, True) ;## UTF-8 - Worse |
---|
7 | $sResults &= UTFx_Test(False) ;## UTF-16 - Works as expected |
---|
8 | |
---|
9 | MsgBox(0, "Results", $sResults) |
---|
10 | |
---|
11 | Func UTF8_Test($bUseUTF8, $bPartial = False) |
---|
12 | Local Const $iCharsToRead = 7 |
---|
13 | Local $hFile, $iStartPos, $iEndPos, $iStrLen, $iBinLen, $sChars |
---|
14 | Local $sToWrite = ($bPartial ? "123456" & ChrW(185) & "789" : ChrW(185) & "23456789") ;## ChrW(185) = Superscript One |
---|
15 | |
---|
16 | $hFile = FileOpen(@TempDir & '\utf8_test.txt', ($bUseUTF8 ? 130 : 34)) ;## 130 = ($FO_UTF8 + $FO_OVERWRITE), 34 = ($FO_UTF16_LE + $FO_OVERWRITE) |
---|
17 | If $hFile <> -1 Then |
---|
18 | FileWrite($hFile, $sToWrite) |
---|
19 | FileClose($hFile) |
---|
20 | Else |
---|
21 | MsgBox(16, "UTF-" & ($bUseUTF8 ? "8" : "16") & " Test", "Failed to create test file") |
---|
22 | Exit (1) |
---|
23 | EndIf |
---|
24 | |
---|
25 | $hFile = FileOpen(@TempDir & '\utf8_test.txt', ($bUseUTF8 ? 128 : 32)) ;## 128 = $FO_UTF8, 32 = $FO_UTF16_LE |
---|
26 | If $hFile <> -1 Then |
---|
27 | $iStartPos = FileGetPos($hFile) |
---|
28 | $sChars = FileRead($hFile, $iCharsToRead) |
---|
29 | $iEndPos = FileGetPos($hFile) |
---|
30 | $iStrLen = StringLen($sChars) |
---|
31 | $iBinLen = BinaryLen(StringToBinary($sChars, ($bUseUTF8 ? 4 : 2))) ;## 4 = UTF-8, 2 = UTF-16LE |
---|
32 | FileClose($hFile) |
---|
33 | Else |
---|
34 | MsgBox(16, "UTF-" & ($bUseUTF8 ? "8" : "16") & " Test", "Failed to open test file") |
---|
35 | Exit (2) |
---|
36 | EndIf |
---|
37 | |
---|
38 | FileDelete(@TempDir & '\utf8_test.txt') |
---|
39 | Return StringFormat("UTF-%s Test\r\n-------\r\nString read: %s\r\nStarting offset: %i\r\nEnding offset: %i\r\n" & _ |
---|
40 | "Characters read: %i\r\nExpected characters read: %i\r\nBytes read: %i\r\n\r\n", _ |
---|
41 | ($bUseUTF8 ? "8" : "16") & ($bPartial ? " - Odd offset" : ""), $sChars, $iStartPos, $iEndPos, $iStrLen, $iCharsToRead, $iBinLen) |
---|
42 | EndFunc |
---|