@IT会議室は、ITエンジニアに特化した質問・回答コミュニティ「QA@IT」に生まれ変わりました。ぜひご利用ください。
- PR -

文字化け(WAVE DASH 問題)について

投稿者投稿内容
HISASHI
会議室デビュー日: 2003/07/10
投稿数: 17
投稿日時: 2003-09-09 17:35
いつもお世話になっております。

OracleデータベースからSELECTしてデータをブラウザ上に表示しているのですが"〜"という
文字が"?"という文字に文字化けされて表示されてしまいます。

ちまたでは「WAVE DASH 問題」なんて言われている問題です。
この問題はunicodeをsjis変換するときに発生するそうです。

------------------------------------------------------------------------
開発環境:ASP.NET(.NET Framework SDK v1.1)エディタで開発(VB)
データベースracle8.1.7
ミドルウェア:Microsoft Oracle .Net Data Provider(MS製)
(ミドルウェアは.NET Framework SDK v1.1に入っているものを使用)

web.configの<globalization>には全てshift-jisを指定してあります。
<globalization
fileEncoding="shift-jis"
requestEncoding="shift-jis"
responseEncoding="shift-jis"
/>

各ASPXファイルの<META>タグにはShift_JISを指定してあります。
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">

各ASPXファイルはエディタで記述してshift-jisにて保存してあります。
------------------------------------------------------------------------

とりあえずweb.configの<globalization>の指定は"utf-8"にすれば
"〜"は正常に表示されるのは分かったのですが、"utf-8"と"shift-jis"に変更した場合
新たな問題が発生するかもしれないので、どうやって解決しようか迷っています。

それにすべてのASPXファイル&コードビハインドファイル(ASPX.VB)をutf-8に変換
して保存しなおさなくてはなりません。
それによる弊害もおそろしいのでどう対応しようか困っています。

<globalization>の指定はVisualStudioで開発すると"utf-8"が規定値として設定されますが
みなさんは何を指定しているでしょうか?
問題無く動作するのであれば、"utf-8"にすべて変更する方法もありかなと思ってはいますが
エディタで開発しているいじょうあまりしたくありません。

プログラム上でReplaceをかける方法もありますが、プログラム修正個所が多いので
こちらも迷っています。

同じような問題があった方で、どのように解決したかアドバイスを頂ければ
ありがたいです。

ミドルウェアのパッチなんかですぐ解決しそうな問題なのかもしれませんが、
よろしくお願いします。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2003-09-09 17:45
http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=3526&forum=7
これ。

 データベースの再構築が可能なら、文字コードをJA16SJISTILDEで作り直せばOKです。


#「Insider.NET 会議室 ディレクトリ」、めちゃくちゃ便利です
HISASHI
会議室デビュー日: 2003/07/10
投稿数: 17
投稿日時: 2003-09-09 18:12
返信ありがとうございます。

「JA16SJISTILDE」はOracle9i Release 2 (9.2.0)からではないのですか?
ちなみに私はOracle8.1.7です。
HISASHI
会議室デビュー日: 2003/07/10
投稿数: 17
投稿日時: 2003-09-09 21:16
文字コードを"utf-8"に指定すればWindows上では"〜"は問題なく
表示されました。
しかし、クライアントがMacではテキストボックス内の文字が化けてしまいます。
こちらはMac IEの問題なので別問題ですが、Macで表示することを考えるとshift-jis
でいかなければならないと思うのですが・・・

みなさんは<globalization>の文字コードの指定は何に設定してますでしょうか?
まゆりん
ぬし
会議室デビュー日: 2002/08/12
投稿数: 539
お住まい・勤務地: よこはま
投稿日時: 2003-09-09 21:38
こんばんは。

私はWin2000のIE6を使用していますので、
<globalization requestEncoding="utf-8" responseEncoding="utf-8" />
で問題ありません。
#と言うより、最初からそうなっていました。

Googleから「Mac IE utf-8 文字化け」で検索してみたところ、
CSSでFont指定してやると解決できるみたいです。
http://hasta-pronto-com.main.jp/archives/000044.html

ただ、こちらにはMac環境が全くないので確認していません。
上のサイトのほかにも幾つか方法があったので
色々と試してみては如何でしょうか?
HISASHI
会議室デビュー日: 2003/07/10
投稿数: 17
投稿日時: 2003-09-09 21:54
返信ありがとうございます。

FONTを指定してあげればMacでは確かに表示できそうですね。
う〜ん、しかしFONTは既にWindows用のFONTを指定してあるし、WinとMacでスタイルを
切り替える処理を入れなければならないのですね。
修正量を考えるといやになってきます。Shift-jisの場合はMacでもちゃんと表示できるのに
なんでUTF-8の時はうまくいかないんでしょう。
Mac版IEの開発も今後MSはしないって言ってるし。

みなさんはASP.NETのMacでの表示はあまり考えていないのでしょうか?
makura
ベテラン
会議室デビュー日: 2002/11/27
投稿数: 90
投稿日時: 2003-09-10 00:42
makuraです。

HISASHIさん
スタイルシートを切り替えずとも、まゆりんさんが示されているページの例のように、Win用のフォントとMac用のフォントの両方をCSSに書いてやればいいですよ。WindowsにはOsakaやヒラギノ角ゴは入っていないのが普通なので、MS Pゴシックが選択されます。MacではOsakaがあるのでOsakaが選択されます。
MacでもOffice:macをインストールするとMS 明朝やMS ゴシックが入ります。(P明朝やPゴシックは入らない)


[ メッセージ編集済み 編集者: makura 編集日時 2003-09-10 01:09 ]
HISASHI
会議室デビュー日: 2003/07/10
投稿数: 17
投稿日時: 2003-09-10 12:09
返信ありがとうございます。

F0NT-FAMILYには複数指定できるんですね。
知らなかったです。
今回はじめてCSSを使いはじめたんで勉強不足でした。

ここで新たな問題が発生しました。
utf-8化するにあたり"〜"という文字が表示はされるのですがおかしく表示されてしまいます。
(Windowsで確認)

どうおかしく表示されるかといいますと"〜"が逆になるっていうのか、説明しずらいですけど、
通常は左が上右が下に波線が表示されますが、右が下左が上に波線が表示されてしまいます。

過去の掲示板でも同じような事例がありました。
このときはoracleの「JA16SJISTILDE」を設定して解決をしています。

みなさんはoracle8バージョンでミドルウェアを.Net Data Provider(MS製) を使用されてる方で
同じような問題を解決された方はいますでしょうか?

やはりプログラム上でReplaceをかけるのが確実なんでしょうか?

スキルアップ/キャリアアップ(JOB@IT)