日本語化パッチの呪い???

むはぁ、夕べは思いのほか手間がかかった・・・

お客さんのサーバの移行を行なったのだが、一部のDBテーブルの移行がうまくいかなくて。
後日対応でもかまわないテーブルだったのだが、状況が謎だらけでその確認だけでもずいぶん時間をとってしまった。

状況としては、varchar(1024) で指定されているレコード項目に、旧サーバでは 2000バイトを超えるデータが登録されているというもの。
そのため、それをそのまま新サーバに移そうとすると当然のごとくエラーとなってしまうわけだ。
DBMS は PostgreSQL。

DB登録を行なう Perl プログラムの中でも、length($hoge) > 1024 なら・・・というチェックをかけているのだが、ここも旧サーバのほうでは 2000バイトを超える文字列がエラーにならず突破してまっている。(EUC の文字数でいうと、1000文字くらい))
もちろん、まったく同じソースを新サーバに持っていくと、このエラーチェックに 2000バイトの文字列は引っかかる。

むーん・・・

もしかして、これがずいぶん昔に話題になった「日本語化パッチの弊害」なのか?

Shift_JIS を扱えるようにする日本語化パッチを Perl に当てると、length や substr が「バイト数ではなく文字数(ダブルバイト文字も 1)でカウントされるようになる」というアレ。
Perl の問題は知ってたんだけど(確か、昔の Turbo Linux の Perl がそういうパッチが当たってる奴じゃなかったっけ?)、PostgreSQL でもエラーにならないってことは、そういうパッチがあるってこと?

旧サーバのほうは、もうずいぶん古いサーバで、僕が管理をしているわけではないので PostgreSQL や Perl にそういうパッチがあたっているかは知らないのだが、とりあえず他に原因が思いつかんし・・・

・・・ということで、昨日は久しぶりの午前様となったのであった。とほほ。

トラックバック(0)

このブログ記事を参照しているブログ一覧: 日本語化パッチの呪い???

このブログ記事に対するトラックバックURL: https://blog.netandfield.com/mt/mt-tb.cgi/149

コメントする

このブログ記事について

このページは、shinodaが2008年9月25日 13:03に書いたブログ記事です。

ひとつ前のブログ記事は「高照寺Tシャツ」です。

次のブログ記事は「久しぶりのポプラ弁当」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。


月別 アーカイブ

電気ウナギ的○○ mobile ver.

携帯版「電気ウナギ的○○」はこちら