[已解决] 如何让 _ReplaceStringInFile 支持 UTF-8 编码文件?
本帖最后由 131738 于 2010-4-1 18:30 编辑如何让 _ReplaceStringInFile 支持 UTF-8 编码文件?
又或如何批量自动修改 UTF-8 的 htm 文件为 GB2312 ?
有办法吗?。。。。谢谢!!!!!! 貌似现在就支持吧,传个文件测试下 回复 2# afan
我已经测试了,替换后为乱码,我整理好后传给你,谢谢!!!! 回复 2# afan
重写时它给保存为Ansi编码了,我再看看 回复 5# afan
谢谢!等你! 本帖最后由 afan 于 2010-4-4 22:26 编辑
回复 6# 131738
修改了 _ReplaceStringInFile 函数,重命名为 __ReplaceStringInFile ,可自动识别编码
;Func __ReplaceStringInFile($szFileName, $szSearchString, $szReplaceString, $fCaseness = 0, $fOccurance = 1)
Local $iRetVal = 0
Local $nCount, $sEndsWith
; Check if file is readonly ..
If StringInStr(FileGetAttrib($szFileName), "R") Then Return SetError(6, 0, -1)
Local $hFile = FileOpen($szFileName, $FO_READ)
If $hFile = -1 Then Return SetError(1, 0, -1)
Local $s_TotFile = FileRead($hFile, FileGetSize($szFileName))
If StringRight($s_TotFile, 2) = @CRLF Then
$sEndsWith = @CRLF
ElseIf StringRight($s_TotFile, 1) = @CR Then
$sEndsWith = @CR
ElseIf StringRight($s_TotFile, 1) = @LF Then
$sEndsWith = @LF
Else
$sEndsWith = ""
EndIf
Local $aFileLines = StringSplit(StringStripCR($s_TotFile), @LF)
FileClose($hFile)
Local $mode = FileGetEncoding($szFileName)
If $mode = -1 Then $mode = 0
Local $hWriteHandle = FileOpen($szFileName, $FO_OVERWRITE + $mode)
If $hWriteHandle = -1 Then Return SetError(2, 0, -1)
For $nCount = 1 To $aFileLines
If StringInStr($aFileLines[$nCount], $szSearchString, $fCaseness) Then
$aFileLines[$nCount] = StringReplace($aFileLines[$nCount], $szSearchString, $szReplaceString, 1 - $fOccurance, $fCaseness)
$iRetVal = $iRetVal + 1
If $fOccurance = 0 Then
$iRetVal = 1
ExitLoop
EndIf
EndIf
Next
For $nCount = 1 To $aFileLines - 1
If FileWriteLine($hWriteHandle, $aFileLines[$nCount]) = 0 Then
FileClose($hWriteHandle)
Return SetError(3, 0, -1)
EndIf
Next
; Write the last record and ensure it ends with the same as the input file
If $aFileLines[$nCount] <> "" Then FileWrite($hWriteHandle, $aFileLines[$nCount] & $sEndsWith)
FileClose($hWriteHandle)
Return $iRetVal
EndFunc ;==>_ReplaceStringInFile; 回复 7# afan
谢谢!!!我看看,有问题再麻烦你。。。。。 回复 8# 131738
刚刚举例时前面少了个_ 记得加上,不然就还是使用的原函数了~ 回复 9# afan
谢谢!!!全部OK了!!!
谢谢提醒,我以注意到了! 回复 9# afan
谢谢!!!全部OK了!!!
谢谢提醒,我以注意到了!
是否应向萧管反应一下呢?。。。。。。 回复 11# 131738
反映下也好,由官网修改最好~
p.s,貌似你又在搞汉化了~ ^ ___ ^ 回复 12# afan
有句名言:闲着也是闲着,混点罢。。。。呵呵!!!!:face (33): 回复afan
有句名言:闲着也是闲着,混点罢。。。。呵呵!!!!
131738 发表于 2010-4-1 17:33 http://www.autoitx.com/images/common/back.gif
看来坛友们又有福啦 :face (23): 回复 14# afan
千万别抱希望,2000 多文件,且是深层次的东西。。。。。
页:
[1]
2