From: "austin (Austin Ziegler)" Date: 2022-06-27T14:30:51+00:00 Subject: [ruby-core:109070] [Ruby master Bug#18882] File.read cuts off a text file with special characters when reading it on MS Windows Issue #18882 has been updated by austin (Austin Ziegler). alanwu (Alan Wu) wrote in #note-5: > `File.read` (actually `IO.read`) interprets the file based on the > external encoding, which is a function of the platform and the environment. > If you put a `p [content.encoding, ::Encoding.default_external]` in your script > I think you should see a difference between the Windows Ruby and WSL Ruby. This is true, but not the source of the problem here. See https://docs.microsoft.com/en-us/cpp/c-runtime-library/text-and-binary-mode-file-i-o?view=msvc-170 and https://docs.microsoft.com/en-us/cpp/c-runtime-library/reference/fopen-wfopen?view=msvc-170. The only real improvement to the documentation would be to suggest opening files for read as `'rb'` *all* the time if your software might be used on Windows or might be anything other than ASCII text with only a few control characters supported (`0x1A` is particularly dangerous, but others like `0x00` might also cause problems). This is well-known Windows behaviour. ---------------------------------------- Bug #18882: File.read cuts off a text file with special characters when reading it on MS Windows https://bugs.ruby-lang.org/issues/18882#change-98214 * Author: magynhard (Matth��us Johannes Beyrle) * Status: Open * Priority: Normal * ruby -v: ruby 3.1.2p20 (2022-04-12 revision 4491bb740a) [x64-mingw-ucrt] * Backport: 2.7: UNKNOWN, 3.0: UNKNOWN, 3.1: UNKNOWN ---------------------------------------- When using File.read to read a text file (in this case a javascript file) with special characters, the content is cut off at special characters. It occurs only when running ruby on Windows, tried several versions, including the latest. Does not occur on Linux or WSL (Windows Subsystem for Linux). I created a github repo including a test script and the source file as the result inside a file as well: https://github.com/grob-net4industry/ruby_win_file_bug ---Files-------------------------------- copy_pdfmake.min.js (582 KB) pdfmake.min.js (1.29 MB) diff.png (55.9 KB) -- https://bugs.ruby-lang.org/ Unsubscribe: