Code:
for (int i=0; i < sData.length(); i++)
{
   char ch = sData[i] & 0xFF;
   char ch2 = sData[i+1] & 0xFF;

   if (ch == '\x80' && ch2 == '\x90')
      zData.replace("\x80\x90", "0");
   else if (ch == '\x81' && ch2 == '\x91')
      zData.replace("\x81\x91", "1");
   else if (ch == '\x82' && ch2 == '\x92')
      zData.replace("\x82\x92", "2");
   ...
   ...
   ...
}
Programmers would use lookup tables instead of an endless bunch of if() statements. What if all of the characters are at the last "else()"? Then this becomes inefficient, since you're going through all of the previous else's to get to the one that matches.

Secondly, how do you know what those characters represent? You have code pages to deal with, and you can't do it by writing ad-hoc if() statements.
Ideally I would like to convert the string to a normal readable format
WideCharToMultibyte

http://msdn.microsoft.com/en-us/libr...8VS.85%29.aspx
Any help would be greatly appreciated, I've been stuck on this for a while now ...
You should have let your customers be aware that multibyte characters were not handled correctly. This is what every single-byte character based application I know of state clearly up front.

There could be other places where the characters may be wide characters, and your app will not handle that area of code correctly.

Regards,

Paul McKenzie