Why display ??? under VB Controls?


  I have the following questions :

Case 1  :
  OS    : English W2K Pro SP3 / WinXP SP1, using 'Chinese (Taiwan)' in Regional Setting
  VB    : 6.0 SP5, MDAC 2.7, SQL Server 2K SP3
  Data  : Unicode with Simplified and Traditional Chinese
  Result: can properly display Traditional Chinese Characters,
          display ???? in Simplified Chinese Characters

Case 2  :
  OS    : English W2K Pro SP3/WinXP SP1,using 'Chinese (PRC)' in Regional Setting, Simp. Win98SE
  VB    : same as above case
  Date  : same as above case
  Result: can properly display both Traditional and Simplified Chinese Characters

  What should I do in order to solve this problem?.. I suppose both traditional and Simplified Chinese Characters can displayed under traditional Windows 2K, as it is UNICODE enabled. Am I right?.

Thomas Cheung

Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

Unicode is a trick deal.  I don't have the answer handy, but if you pick up the book on "Internationalization of you VB6 Application" (or something similar distributed by MS press) I think it describes how to overcome these problems in something like chapter 11.
Richie_SimonettiIT OperationsCommented:
Yes Win2K can handle the unicode for both versions of Chinese, however you will actually be using the DBCS character sets when running VB6 apps since VB6 uses ANSI code pages to display data to the user.

The incompatabilities are probably a result of some glyphs not being present in the TC charcter set, while the glyphs are present in the SC version.

The character set VB uses will be determined by your system code page (is you systems regional settings, not your user's regional settings).

Hope this helps.
Ultimate Tool Kit for Technology Solution Provider

Broken down into practical pointers and step-by-step instructions, the IT Service Excellence Tool Kit delivers expert advice for technology solution providers. Get your free copy now.

thomascyAuthor Commented:
I ensured that the stored data are UNICODE, that means VB6 will convert to DBCS internally while displaying chinese characters?..

But why MS Access 2000 can do that?... In MS Access 2000, it can display both TC & SC characters in W2K with 'Chinese (Taiwan)' in Regional setting.

And how can I change system regional settings in W2K?..

Access 2K is fully unicode compliant, VB6 is not.  Access and the rest of the Office2K suite were developed to handle unicode input as well as the older code page input, depending on the OS version you are running.  You don't have this control in VB6.

When VB6 was developed it was assumed that the "outside world" (ie the operating system) worked in a particular code page, not in Unicode.  This means that all standard controls and so forth will convert from DBCS to unicode and back again on I/O.  You can get unicode compliant controls but it means a lot of rework you your application.

To change your system settings go to regional settings->general->set default... and select the appropriate locale.

After reboot you should see some changes to how your application behaves.
thomascyAuthor Commented:
stretch71, thank you for your detail explaination. But can you kindly suggest any other solutions?.. any other controls support UNICODE in VB?

There are the Windows Forms 2.0 controls (I think that they are installed as part of office, and you will have to check wether they can be redistributed) and they provide good replacements for most of the standard controls (ie text boxes, labels, etc) and in most cases can just be dropped in as direct replacements.

If you are using 3rd party controls, or something a little more unusual you will have to check for yourself.  Sorry.

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
thomascyAuthor Commented:
Good!... It really works!.. But is there any tricks in deployment?.. or is there any tips in using Forms 2.0 Control?..

Deployment is standard.  Just make sure the .ocx is part of your install kit.  I haven't used the forms package that much so I can't provide any tips other than to use the controls in the same way you would any other control.
My understanding is that the forms ocx can only be distributed to machines that are licensed with Office, according to the Microsoft documentation.

I've experienced exactly the same in XP.

Before you can use Chinese(Taiwan) in VB, in Control Panel/Regional and Language options/Languages
you need to

"Install files for East Asian languages"

in "Text services and Input Languages/Details" add a Chinese(Taiwan)keyboard

in "Advanced"
select Chinese(Taiwan)
code pages (e.g Traditional Chinese Big 5)

voila! no ??? but chinese!!!

no wierd ocx stuff!!
Forget my last comment, it may not be relevant, sorry
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Visual Basic Classic

From novice to tech pro — start learning today.

Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.