How to generate tables?

Win32
Win32 with WC_NO_BEST_FIT_CHARS (Unicode to CP932)
C:\> cl utf16_to_cp932-win32.cpp
C:\> .\utf16_to_cp932-win32.exe --wnbfc > result/utf16_to_cp932-win32_wnbfc-windows7.txt
Win32 without WC_NO_BEST_FIT_CHARS (Unicode to CP932)
C:\> cl utf16_to_cp932-win32.cpp
C:\> .\utf16_to_cp932-win32.exe > result/utf16_to_cp932-win32-windows7.txt
Win32 (CP932 to Unicode)
C:\> cl cp932_to_utf16-win32.cpp
C:\> .\cp932_to_utf16.exe > cp932_to_utf16-win32-windows7.txt

Both Visual C++ 2008 Express Edition and Cygwin g++ can compile them.

Perl 5.10.1
$ perl5.10.1 utf16_to_cp932.pl > result/utf16_to_cp932-perl_5.10.1-macports_1.8.2.txt
$ perl5.10.1 cp932_to_utf16.pl > result/cp932_to_utf16-perl_5.10.1-macports_1.8.2.txt
Ruby 1.9.1_p376
$ ruby1.9 utf16_to_cp932.rb > result/utf16_to_cp932-ruby_1.9.1p376-macports_1.8.2.txt
$ ruby1.9 cp932_to_utf16.rb > result/cp932_to_utf16-ruby_1.9.1p376-macports_1.8.2.txt
glibc 2.7
$ g++ utf16_to_cp932-libiconv.cpp
$ ./a.out > result/utf16_to_cp932-glibc_2.7-ubuntu_8.04_japanese.txt
$ g++ cp932_to_utf16-libiconv.cpp
$ ./a.out > result/cp932_to_utf16-glibc_2.7-ubuntu_8.04_japanese.txt

This table was generated on Ubuntu 8.04 (Japanese) that uses glibc 2.7.

eglibc 2.10.1
$ g++ utf16_to_cp932-libiconv.cpp
$ ./a.out > result/utf16_to_cp932-eglibc_2.10.1-ubuntu_9.10.txt
$ g++ cp932_to_utf16-libiconv.cpp
$ ./a.out > result/cp932_to_utf16-eglibc_2.10.1-ubuntu_9.10.txt

This table was generated on Ubuntu 9.10 that uses eglibc 2.10.1.

Java 1.6.0_17
$ javac utf16_to_cp932.java
$ java utf16_to_cp932 > result/utf16_to_cp932-java_1.6.0_17-osx_10.6.2.txt
$ javac cp932_to_utf16.java
$ java cp932_to_utf16 > result/cp932_to_utf16-java_1.6.0_17-osx_10.6.2.txt
libiconv
libiconv 1.13.1
$ g++ utf16_to_cp932-libiconv.cpp -liconv
$ ./a.out > result/utf16_to_cp932-libiconv_1.13.1_0-macports_1.8.2.txt
$ g++ cp932_to_utf16-libiconv.cpp -liconv
$ ./a.out > result/cp932_to_utf16-libiconv_1.13.1_0-macports_1.8.2.txt
libiconv 1.13.1 + cp932 patch

First, install libiconv with cp932-patch. If you are using macports, install libiconv with +enable_cp932fix variant.

$ g++ utf16_to_cp932-libiconv.cpp -liconv
$ ./a.out > result/utf16_to_cp932-libiconv_1.13.1_0+enable_cp932fix-macports_1.8.2.txt
$ g++ cp932_to_utf16-libiconv.cpp -liconv
$ ./a.out > result/cp932_to_utf16-libiconv_1.13.1_0+enable_cp932fix-macports_1.8.2.txt
apr-iconv

The include path (-I/opt/local/include/apr-1/) and the library path (-L/opt/local/lib/) may be different on your system.

apr-iconv 1.2.1

First, install APR and APR-iconv.

$ g++ -I/opt/local/include/apr-1/ -L/opt/local/lib/ -lapriconv-1 -lapr-1 utf16_to_cp932-apriconv.cpp
$ ./a.out > result/utf16_to_cp932-apriconv_1.2.1.txt
$ g++ -I/opt/local/include/apr-1/ -L/opt/local/lib/ -lapriconv-1 -lapr-1 cp932_to_utf16-apriconv.cpp
$ ./a.out > result/cp932_to_utf16-apriconv_1.2.1.txt
apr-iconv 1.2.1 + cp932 patch

First, install APR and APR-iconv with cp932 patch that created by me.

$ g++ -I/opt/local/include/apr-1/ -L/opt/local/lib/ -lapriconv-1 -lapr-1 utf16_to_cp932-apriconv.cpp
$ ./a.out > result/utf16_to_cp932-apriconv_1.2.1+cp932_patch.txt
$ g++ -I/opt/local/include/apr-1/ -L/opt/local/lib/ -lapriconv-1 -lapr-1 cp932_to_utf16-apriconv.cpp
$ ./a.out > result/cp932_to_utf16-apriconv_1.2.1+cp932_patch.txt
apr-iconv 1.2.1 + cp932 patch2

First, install APR and APR-iconv with cp932 patch2 that created by me.

$ g++ -I/opt/local/include/apr-1/ -L/opt/local/lib/ -lapriconv-1 -lapr-1 utf16_to_cp932-apriconv.cpp
$ ./a.out > result/utf16_to_cp932-apriconv_1.2.1+cp932_patch2.txt
$ g++ -I/opt/local/include/apr-1/ -L/opt/local/lib/ -lapriconv-1 -lapr-1 cp932_to_utf16-apriconv.cpp
$ ./a.out > result/cp932_to_utf16-apriconv_1.2.1+cp932_patch2.txt
Python
Python 2.6.4
$ python2.6 utf16_to_cp932.py > result/utf16_to_cp932-python_2.6.4-macports_1.8.2.txt
$ python2.6 cp932_to_utf16.py > result/cp932_to_utf16-python_2.6.4-macports_1.8.2.txt
Python 2.7a3 + cp932 patch

First, install Python 2.7a3 with cp932 patch that created by me.

$ python2.7 utf16_to_cp932.py > result/utf16_to_cp932-python_2.7a3+cp932_patch.txt
Python 2.7a3 + cp932 patch2

First, install Python 2.7a3 with cp932 patch2 that created by me.

$ python2.7 utf16_to_cp932.py > result/utf16_to_cp932-python_2.7a3+cp932_patch2.txt
PHP 5.3.0 (mb_convert)
$ php utf16_to_cp932.php > result/utf16_to_cp932-php_5.3.0-osx_10.6.2.txt
$ php cp932_to_utf16.php > result/cp932_to_utf16-php_5.3.0-osx_10.6.2.txt
cp932_roundtrip.html
$ ruby1.9 cp932_roundtrip.rb > cp932_roundtrip.html

cp932_roundtrip.rb uses result/*.txt, UnicodeData.txt (obtained from unicode.org), gen.html.

References