いつもお世話になっております。
随分と前に作ったWebシステムで作成したMysqlのデータをCSVへエクスポート、PostgreSQLにインポートし、Javascriptを使ったフレームワークで表示しているのですが、改行を含むテキスト項目がうまく表示できないので困っています。
Mysqlのシステム上では、テーブルの列の値のまま表示すると、
職人さん送出し
内勤業務
なのですが、PostgreSQL上で、テーブルの列のまま表示すると、
引用テキスト職人さん送出し\ \ 内勤業務
といった具合にでてきます。
Mysqlのテーブルは、Sjisで作っており、それに合わせてぺージもSjisで作ってしまったものです。
texareaタグで改行コードを入れてvarchar型のフィールドに書き込んでいますが、MySQL~PHP上では、入力した通りに表示できています。
対して、PostgreSQLは、utf-8で作ってあり、ページもutf-8で作っています。
PostgreSQLのpsqlでSQLを使って見てみると、
職人さん送出し\r
\r
内勤業務
といった具合に出ます。
エスケープ文字が二重に入っているように見えるのですが、Javascriptで
memo = memo.replace(/\r\n/g, '<br/>');
と変換すると、
職人さん送出し
内勤業務
でエスケープ文字が残った形?になり、
memo = memo.replace(/\r\n/g, '<br/>');
とすると、変換できません。
PostgreSQLで、事前に変換を掛けようとして、
select regexp_replace(memo, '\r', '\r') from nippo; やら
select regexp_replace(memo, '\r\n', '\n') from nippo;
など試してみましたが、何れも変換が効いていません。
単に正規表現の書き方の問題なのか、変な状態でデータが書き込まれてしまったのかよく判りません。
どのように対処すべきなのか、アドバイス頂ければ幸いです。
