----------------------------------------
-- Converts Windows-1252 (CP-1252) encoded file to UTF-8 file
-- see http//en.wikipedia.org/wiki/Windows-1252 for details
-- concernig difference of ISO-8859-1 and CP-1252
-- Notice: This is the default encoding for Director 10 and older on the PC.
----------------------------------------
on cp1252_to_utf8_file (inputFile, outputFile)
convert_text_file (inputFile, "windows-1252", outputFile, "utf-8")
end
----------------------------------------
-- Converts ISO-8859-1 encoded file to UTF-8 file
----------------------------------------
on iso88591_to_utf8_file (inputFile, outputFile)
convert_text_file (inputFile, "iso-8859-1", outputFile, "utf-8")
end
----------------------------------------
-- converts text files from one encoding to another
-- requires D11.5+ and fileio xtra
-- for supported encodings check: put _system.getInstalledCharSets()
----------------------------------------
on convert_text_file (inputFile, inputEncoding, outputFile, outputEncoding)
inputBA = file_get_bytes(inputFile)
outputBA = convert_text_ba (inputBa, inputEncoding, outputEncoding)
file_put_bytes(outputFile, outputBa)
end
----------------------------------------
-- converts text in bytearray from one encoding to another
-- requires D11.5+
-- for supported encodings check: put _system.getInstalledCharSets()
----------------------------------------
on convert_text_ba (inputBa, inputEncoding, outputEncoding)
inputBa.position = 1
utf8 = inputBa.readRawString(inputBa.length, inputEncoding)
tmp = bytearray()
tmp.writeString(utf8, outputEncoding)
tmp.position = 5
return tmp.readByteArray(tmp.length-4)
end
----------------------------------------
-- returns file as ByteArray
----------------------------------------
on file_get_bytes (tFile)
fp = xtra("fileIO").new()
fp.openFile(tFile, 1)
err = fp.status()
if (err) then return false
data = fp.readByteArray(fp.getLength())
fp.closeFile()
fp = 0
return data
end
----------------------------------------
-- saves ByteArray to file
----------------------------------------
on file_put_bytes (tFile, tByteArray)
fp = xtra("fileIO").new()
fp.openFile(tFile, 2)
err = fp.status()
if not (err) then fp.delete()
else if (err and not (err = -37)) then return false
fp.createFile(tFile)
err = fp.status()
if (err) then return false
fp.openFile(tFile, 2)
err = fp.status()
if (err) then return false
fp.writeByteArray(tByteArray)
fp.closeFile()
fp=0
return true
end