| 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 | 
|---|