Jump to content

  • Log In with Google      Sign In   
  • Create Account

Unicode Reading Writing + ASCII Reading Writing - Same File


Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.

  • You cannot reply to this topic
5 replies to this topic

#1 Wangru   Members   -  Reputation: 208

Like
0Likes
Like

Posted 19 July 2013 - 01:36 AM

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)

 

 



Sponsor:

#2 LorenzoGatti   Crossbones+   -  Reputation: 2779

Like
2Likes
Like

Posted 19 July 2013 - 06:24 AM

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.


Produci, consuma, crepa

#3 Wangru   Members   -  Reputation: 208

Like
0Likes
Like

Posted 20 July 2013 - 12:13 AM

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.



#4 Olof Hedman   Crossbones+   -  Reputation: 2957

Like
1Likes
Like

Posted 20 July 2013 - 02:44 AM

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.



#5 Wangru   Members   -  Reputation: 208

Like
0Likes
Like

Posted 24 July 2013 - 04:01 AM

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. 



#6 Olof Hedman   Crossbones+   -  Reputation: 2957

Like
1Likes
Like

Posted 24 July 2013 - 04:43 AM

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.






Old topic!
Guest, the last post of this topic is over 60 days old and at this point you may not reply in this topic. If you wish to continue this conversation start a new topic.



PARTNERS