Unicode Reading Writing + ASCII Reading Writing - Same File

Started by
4 comments, last by alh420 10 years, 8 months ago

I want to convert a ASCII based profile system into Unicode without changing much of game code. Currently Most of thing's that i save in profile file are ASCII but there are few thing's that i need to save as wchar_t , I don't want to create seperate file for them and want to put them in same file. so basically i want this file to be unicode so i can write wchar_t in it + I want to write ascii in it too so that i don't have to change alot of code in game and convert everything in wide character. Same goes for reading too.

Is it possible to read ASCII & Wide Character from same file keeping the file a unicode.

This is process i will go through

Read from a basic profile - LoadProfile() All ASCII ,,
then i will save this file as unicode file as there are going to be some w char types too ,,
then I want to read & write both Unicode & ASCII in that file during gameplay..

this is how my file will look ..

ProfileName

88

88

43

LevelName

AnotherLevelName

Text (ASCII)

323

Text (ASC(())

434

43

???? ??????? ??? (Unicode Text)

???? ??????? ??? (Unicode Text)

Advertisement

You should use Unicode strings everywhere in your program and the common UTF-8 encoding for the whole of your file.

Treat 7-bit clean ASCII as a special case of UTF-8 and 8-bit OEM encoding as an aberration that happened in a parallel universe, but not in your standard library.

A mixture of different string types is only an opportunity to make a mess and to corrupt memory, while a mixed-encoding file is effectively impossible to edit and probably impossible to load correctly.

Omae Wa Mou Shindeiru

You should use Unicode strings everywhere in your program and the common UTF-8 encoding for the whole of your file.

Treat 7-bit clean ASCII as a special case of UTF-8 and 8-bit OEM encoding as an aberration that happened in a parallel universe, but not in your standard library.

A mixture of different string types is only an opportunity to make a mess and to corrupt memory, while a mixed-encoding file is effectively impossible to edit and probably impossible to load correctly.

Thanks, I have decided to convert char to Unicode before saving them to profile and converting back to ASCII upon loading. I hope that works fine.

Just to be clear, there is not really any converting needed. A unicode string stored in UTF8 that only uses the 7-bit ascii-characters, is identical to an ascii-string.

Just to be clear, there is not really any converting needed. A unicode string stored in UTF8 that only uses the 7-bit ascii-characters, is identical to an ascii-string.

It is needed if you don't want to change a piece of code of other files and just want to modify profile save & load functions and get to save Unicode data. but of course for those types which needs to be rendered must be converted to wide character type.
I got it done by converting all to Unicode supported type (wchar_t) before saving if they are not unicode type already and saving to file with unicode encoding. Later getting all unicode data from file n converting all those back to ascii if they were not originially unicode.

Nice you got it to work, but there is still no conversion needed upon reading/writing UTF8 data

If the file is saved in utf8, you could read some strings as ascii, and other strings as unicode from the same file.

You don't even have to change the save/load-functions, you could just chuck some unicode data at the end of the file, and only read those strings with unicode functions, and let all other strings be read/written as ascii. The profile file would even be backwards compatible with versions that don't know about the extra unicode strings.

UTF8 is designed for backwards compatibility with ASCII, that is, its perfectly valid to mix ascii-strings and ut8-encoded unicode strings in the same file, as long as you know what strings to read as ascii and what strings to read as unicode.

This topic is closed to new replies.

Advertisement