Title: Unicode and Visual Basic: A Case Study
1Unicode and Visual Basic A Case Study
- Michael S. Kaplan
- Software Design Engineer
- Trigeminal Software, Inc.http//www.trigeminal.co
m
http//www.i18nWithVB.com/
2The purpose of Visual Basic
- Making Windows development easier
- Promote the Windows platform through ISVs who use
it - The "apple in Bill's eye"
3International support in the early versions
- Very limited!
- Multiple versions of the product codebase
- Bugs found in one language version often not
fixed elsewhere - Certainly NO Unicode support
4VB 4.0 - a time for choices
5Keep VB in 16 bit, and take advantage of the
support for Win16 applications
- Easy for VB to do
- Useless for the Win32 platform itself
- No international support at all
6Move VB to Win32 entirely, leveraging the
emerging NT platform's full support of Unicode
through its "W" APIs.
- Great international solution
- Poor solution for Windows 95
7Move VB to Win32 but still with a code page model
rather than a Unicode one, using the "A" APIs.
- Easiest to do
- Less multilingual support
8A hybrid technique ("A" APIs on Win9x, "W" APIs
on NT)
- Most complicated to do
- Best international support
- Good leveraging of the best features of each
platform
9What the VB team actually did
- Using COM
- Porting the original VB
- Working with the volume platform (Windows 95)
10Where COM fits in
- Benfits to VB by using COM
- Benefits to COM by VB being a client
11The birth of "UniMess"
- An attempt to keep the conversion from VB3 to VB4
simple - From simplicity comes confusion
12The cousin of UniMessUsing LCIDs for code pages
- COM's biggest drawback
- Once again, simplicity causes problems
13Beyond UniMess
- Intrinsic function woes
- Source file encoding compatibility
- Trouble with the Ruby forms package
- Difficulties with API calls
- Problems with file i/o
14The verdict for VB4?
15Changes in VB5
- Minor functionality enhancements
- No major changes for Unicode support
- Some work with the StrConv function
16Changes in VB6
- More work with StrConv
- A lot of VB-specific code moved to COM
- A lot of other VB-specific functionality now
using existing COM methods
17And then came VB.NET
- System.Text
- System.Globalization
- System.Resources
- The unicode Visual Studio IDE
18Lessons learned
- Was VB4 a good Unicode integration?
- Were VB5 and VB6 good integrations?
- What about VB.NET?
19Summary of lessons learned
- Backwards compatibility is crucial
- Conversion between Unicode and other encodings is
crucial - New data types need new constructs
- Understand why you are supporting Unicode (the
primary reasons for that support) - Know what supplementary benefits you will gain
from Unicode
20Questions?
21- Unicode and Visual BasicA Case Study