Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

What text mode does is it will translate newline characters to the local operating system convention for newline characters. See IBM, DOS and Windows Newlines to understand why windows expresses newlines with \r\n while the rest of the Unix based world uses\n.

Here’s a code fragment which shows the problem on windows:

Expand
titleThis code fragment shows the problem:

Take a careful look at how in the non binary mode the new line sequences are translated - \r\n to \n.

Expand
titleThis is the same code fragment with big ugly red boxes around the parts of the annotation to pay attention to
Image Removed

Notice how when we read in text mode, the \r\n sequences are translated to \n. But in binary, the data isn’t altered. This can really mess up your files!

image-20231208-152427.pngImage Added
Expand
titleIf you want to reproduce it here is the code

Don’t forget to import the FIL Library.

Code Block
languagelua
require "FIL.FILreadWrite"

function main(Data)
   FILwrite("~test.txt", "Freddy\r\nSmith\r\n")
   FILread("~test.txt")
   local F = io.open("~test.txt",'r')
   Result = F:read("*a")
   F:close()
   return Result
end