goldenix Posted December 27, 2008 Posted December 27, 2008 (edited) Make New UTF-8 File with notepad first : make New Text document.txt open it & save as New Text document.txt with utf-8 encoding. & rename it to New Text document.au3 unless you do this you cant run the code belw!In sample 1 we will create new UTF-8 file & write a line онлайн in it, in next example we do the same, but after this we try to replace our line with string <done>онлайн. And hire it screws all up. Just run the code & compare 2 files & you will understand everything.Mybe _ReplaceStringInFileshould be rewritten to modify existing file & not to create new one.?So this is a bug right?aa same goes for : _FileWriteToLine#include <File.au3> $file1 = 'test1.txt' $file2 = 'test2.txt' ;## Sample 1 $hFile = FileOpen($file1, 128+1) ; make UTF- File FileWriteLine($hFile, "онлайн") FileClose($hFile) ;## Sample 2 $hFile = FileOpen($file2, 128+1) ; make UTF- File FileWriteLine($hFile, "онлайн") FileClose($hFile) _ReplaceStringInFile($file2,'онлайн', '<done>онлайн') Edited December 27, 2008 by goldenix My Projects:[list][*]Guide - ytube step by step tut for reading memory with autoitscript + samples[*]WinHide - tool to show hide windows, Skinned With GDI+[*]Virtualdub batch job list maker - Batch Process all files with same settings[*]Exp calc - Exp calculator for online games[*]Automated Microsoft SQL Server 2000 installer[*]Image sorter helper for IrfanView - 1 click opens img & move ur mouse to close opened img[/list]
au3scr Posted December 27, 2008 Posted December 27, 2008 Test 2 works for me go to File -> Encoding and select UTF8
goldenix Posted December 27, 2008 Author Posted December 27, 2008 (edited) Test 2 works for me go to File -> Encoding and select UTF8 Nahh it never workd, nor it does now. but i think i fixed it. im not 100% sure tho. I altered #include <File.au3> _ReplaceStringInFile function line 633 from: $hWriteHandle = FileOpen($szFileName, 2) to: $hWriteHandle = FileOpen($szFileName, 128+2) but will it cause any errors? I mean I dont understand 100% how this UDF is written. EDIT: OK This does not work it corrupts the string in other manner now. In the end I had to use this code, to replace a line in non ansi enoding: expandcollapse popup;## Get line from file & replace it with <Completed>myline ;~ ------------------------------------------------------ $links_temp = 'links.temp' $file = FileOpen($links_txt, 128+0) $lineread = filereadline($file,$a) ; read string at line nr $a FileClose($file) ;## make UTF8 file first $hFile_ = FileOpen($links_temp, 128+1) ; make temp UTF- File FileClose($hFile_) $file = FileOpen($links_txt, 128+0) ; open in read mode $file2 = FileOpen($links_temp, 128+1) ; open in write mode If $file = -1 Then MsgBox(0, "Error", "Unable to open file: " & $file) Exit EndIf ; Read in lines of text until the EOF is reached While 1 $line = FileReadLine($file) If @error = -1 Then ExitLoop ;## if its our line replace it If StringInStr($line,$lineread) Then FileWriteLine($file2, '<Completed>' & $lineread) Else FileWriteLine($file2, $line) EndIf Wend FileClose($file) FileClose($file2) FileMove($links_temp ,$links_txt,1) ; overwrite old links.txt Edited December 28, 2008 by goldenix My Projects:[list][*]Guide - ytube step by step tut for reading memory with autoitscript + samples[*]WinHide - tool to show hide windows, Skinned With GDI+[*]Virtualdub batch job list maker - Batch Process all files with same settings[*]Exp calc - Exp calculator for online games[*]Automated Microsoft SQL Server 2000 installer[*]Image sorter helper for IrfanView - 1 click opens img & move ur mouse to close opened img[/list]
Portelly Posted March 23, 2009 Posted March 23, 2009 Hi I got the some same problem with UTF8 files and ReplaceStringInFile I figure the same solution about the code replacement $hWriteHandle = FileOpen($szFileName, 128 + 2) As i work only in UTF8 or ANSI, i choose to copy/paste the _ReplaceStringInFile function to create a new _ReplaceStringInUTF8File function and change the $hWriteHandle = FileOpen($szFileName, 2)To $hWriteHandle = FileOpen($szFileName, 128 + 2) After many test, i nerver seen it corrupt the file or the string. P.
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now