また文字コード


// Java
String s = "ねこ";


// D
char[] s = "ねこ";

で、

s.length

は、Javaなら「2」で、Dなら「6」なので、それを意識せずにトランスレートしていると、やはり問題多いです。
たとえば、Converter.substringのあとに、Converter.StrToTCHARsを呼び出すような部分は、substringをutf-8のまま処理しているので、日本語の途中部分で切ってしまって、そのままutf-16のdecode関数へ渡すので、かなりの頻度で例外が発生しています。
こうなると、utf-8を標準にしているDがよくない気が。でも、CのAPIを使うことを考えると、utf-8だと日本語以外なら、そのまま使えるので便利というのは分かるのですが、日本語としては、よくないです・・。