内部の文字列がAnsiString(ShiftJIS)からUTF-16に変更になった
ver 2.xxまでは文字列は全てShiftJISでしたが、ver 3からは全てUTF-16になりました。
この変更は9x系の切り捨て、及び、NTFSで扱うファイル名への対応、コンパイラの変更(Delphi6JからDelphi2009, ver 3.06からはDelphi 2010, ver 3.11からはDelphi XE2)のために行われました。
この変更で文字列を扱うときに注意を払わなければならない点があります。
- LengthStr手続き
- この手続きはサロゲートペアを1文字とカウントせず、2文字以上としてカウントします。サロゲートペアを1文字とカウントする必要がある場合は新規に追加されたLengthStrW手続きを使用して下さい。
- CopyStr手続き
- この手続きはサロゲートペアを考慮しません。サロゲートペアを1文字として扱うには、新規に追加されたCopyStrW手続きを使用して下さい。
- 正規化
- NTFSはファイル名を正規化しません。SASFも正規化しない「生の」文字列をそのまま使用しています。
もし、スクリプト内部で必要があるならば文字列を新規追加されたNormalizeStr手続きを使用して正規化するなりしてください。
- ReadTextFile,WriteTextFile
- ReadTextFile,ReadTextFileEx,WriteTextFile,WriteTextFileExに関しては、互換性確保のために、従来通りShiftJISでテキストを書き出します。
ShiftJIS以外でテキストを読み込んだり書き出したりする必要がある場合は新規に追加されたReadTextFileW,WriteTextFileWを使用して下さい。
なお、ShiftJIS > UTF-16 > ShiftJISの用なコンバートが掛かる場合の、「文字化け」に関しては十分注意が必要です。SASFではこのような場合のフォローはおそらく困難です。
- GetIniDataStr,SetIniDataStr,GetIniDataInt,SetIniDataInt
- 互換性確保のためにShiftJISで読み込み・書き出しを行います。任意のコードページで読み書きするには、新規に追加されたGetIniDataStrW,SetIniDataStrW,GetIniDataIntW,SetIniDataIntWを使用して下さい。
<<< 前へ TOP 次へ>>>