ADVANCED: Unreal sometimes changes the INI files from ASCII to UNICODE

From Oldunreal-Wiki
Jump to navigation Jump to search

UNICODE in Unreal.ini / User.ini

What is the problem? As your know (or SHOULD), Unreal stores the engine settings in the file Unreal.ini and all User related stuff (keybinds, name, etc...) in the file User.ini both of which can be found in the Unreal\system directory.

Normally, these files are plain ASCII texts and can easily be edited by any ASCII editor, like NOTEPAD.

For some very strange reason, Unreal sometimes just forgets about ASCII and saves any of the ini files in an alternate format, called UNICODE. UNICODE is an "international" version of ASCII which was designed to include all sorts of letters and special symbols which could not be represented with standard ASCII. In effect, ASCII uses 8 bits (each letter is 1 byte) and UNICODE 16 (each letter is 2 bytes), so you will see for example that a UNICODE ini file might start like this:

ÿþ[ U R L ]

although the full contents is just (ASCII):

[URL]

So you see, the UNICODE file starts with a two byte header and since the normal ASCII is part of the UNICODE with a "zero" value in front of the ASCII byte you can still see the actual ASCII content within the UNICODE file if you simply read every 2nd letter.

UNICODE was designed mainly for internationalization for documents, so why Unreal is capable of using UNICODE is a riddle beyond understanding. Unreal does not need UNICODE at all, as if anyone would play a chineese version of it?

All right - so how do we get back the plain ASCII content?

Quite simple, delete the first 2 bytes and destroy all "zero" values in the file. This works only for UNICODE files which contain PLAIN ASCII content, because REAL UNICODE files need those extra bytes of course... Sounds like a daunting task...

It is... if you try to do that manually, you will take ages. However there are tools available which can convert such files, or I believe even most Office application are capable of doing that (don't know though). However if you don't get it, here's a very simple one...

A small binary file filter tool I programmed years ago in C. For the Unreal purpose, I also include batch files to quickly convert the 2 ini files. Full manual is included so you can easily write your own batches to adjust to other files or whatsoever...

Here we go: Tool name: ACONV (Version 0.2e) OS: MSDOS (no long filename support) - might compile on Amiga, too Size(zip): 26k Download: RIGHT NOW Usage: Just unzip it into your Unreal\system directory. Executing _UN_INI.BAT will convert Unreal.ini to plain ASCII into a file simply called "A", and executing _US_INI.BAT will do the same for User.ini. ACONV will not overwrite existing target files, nor modify input files. It will also give feedback about other erros (file not found blah blah...) Typing "ACONV /h" on the dos prompt will give full usage. Or just read the text manual included...

YOU wrote this? It says author is PtMC Yea, that's me... long ago... I could prove that with the source, but this tool is, although the source is nicely documented, still a bit tricky written so I won't hand out the source except if you ask VERY nicely! But no big thing anyway, so I might just say I feel too ashamed to hand out the source hahaha :)


Final Note When you start Unreal again and exit it again, your ini file will be back UNICODE, so each time you have to convert it again between starts. You COULD also simply write protect your ini file(s) you never want to be changed again, but of course then Unreal cannot perform any wanted changes either...