
ASP.NETをVBで開発しています。
無償の ASP.NET ホスティング 「WebMatrixHosting Japan」で実行しています。
表題の件ですが、シフトJISのHTMLページから
UTF-8のASPXページへPOSTした時に、文字化けすることで困っています。
シフトJISの値をUTF-8に変換できる方法をご存知の方、教えてください。お願いします。
ASCII文字は問題なく実行できます。
以下検証中のコードです
ファイル名:SJIS.htm
<form action="UTF-8.aspx">
<input type="text" name="username">
<input type="submit">
</form>
ファイル名:UTF-8.aspx
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
IF request.form("username") <> "" THEN
DIM strIn AS String = request.form("username")
Dim bytesData As Byte() = System.Text.Encoding.GetEncoding("shift_jis").GetBytes(strIn)
Dim outPut As String = System.Text.Encoding.GetEncoding("UTF-8").GetString(bytesData)
Literal1.Text = outPut
END IF
End Sub
No.3ベストアンサー
- 回答日時:
検索して次のページを見つけました
http://www.microsoft.com/japan/technet/prodtechn …
これによると、request.form は、UTF8エンコードをサポートしないとか書いてあります。
また、request.formを使う場合はテキスト形式(ANSI)でページを保存せよと書いてあります。(ちょっと意味不明)
UTF8のページからポストできるならUTF8のページで統一した方がいいかもしれません
参考URL:http://www.microsoft.com/japan/technet/prodtechn …
BLUEPIXYさんありがとうございます。
教えて頂いたTechNetのページを見ました。
シナリオ 3: ~Request.Form、~などのメソッドは、UTF-8 エンコードをサポートしません。~
シナリオ 5: ASP ページをテキスト形式 (ANSI) として保存すると、ページが機能します。
というところが気になりました。しかし、相変わらずMSのページは私の国語力不足からかさっぱり意味が分かりませんが、BLUEPIXYさんのおかげで方向性が見えてきました。ありがとうございます。
BLUEPIXYさんのアドバイス通りUTF8のページで統一した方がいいのかもしれません。
新しい言語を始めると、必ず文字コード変換で困ってしまいます。文字コードでつまづいた時だけ、日本人に生まれたことを軽く後悔してしまいます。。。
No.2
- 回答日時:
Imports System
Imports System.IO
Imports System.Text
Class ConvertExampleClass
Shared Sub Main()
' INPUT
Dim sr As StreamReader = new StreamReader("sjis.txt", _
Encoding.GetEncoding("shift_jis"))
' OUTPUT
Dim Fs As FileStream = New FileStream("UTF8.txt", _
FileMode.Create, FileAccess.Write, FileShare.None)
Dim SwFromFileStreamUTF8 As StreamWriter = _
New StreamWriter(Fs, System.Text.Encoding.UTF8)
Dim oneLine As String
Dim outPuts As String
Dim sjisBytes as Byte()
Dim utf8Bytes as Byte()
Do While sr.Peek() >= 0
oneLine = sr.ReadLine()
' System.Console.WriteLine(oneLine)
sjisBytes = Encoding.GetEncoding("shift_jis").GetBytes(oneLine)
utf8Bytes = Encoding.Convert(Encoding.GetEncoding("shift_jis"), _
Encoding.GetEncoding("utf-8"), sjisBytes)
outPuts = System.Text.Encoding.GetEncoding("utf-8").GetString(utf8Bytes)
SwFromFileStreamUTF8.WriteLine(outPuts)
Loop
sr.Close()
SwFromFileStreamUTF8.Flush()
SwFromFileStreamUTF8.Close()
End Sub
End Class
------------------------------------------------------------------
今ASPでテストできる環境にないので
上記みたいなテストプログラムを書いて、シフトJISのファイルからUTF8に変換してファイルを書き出すことができるのは、確認しました。
ただ、まあ、上記のプログラムは、StreamReaderを作る時点で内部コードに読み込んでいるまた、StreamWriterで内部コードからUTF8に変換するので、シフトJISのバイトに変換してUTF8のバイトに変換してという作業は、ムダなんですけど。
同じような意味では、リクエストを読み込む時点でのエンコードを指定してやるといいかもしれません。
Request.ContentEncoding
とか(未確認)
No.1
- 回答日時:
Dim bytesData As Byte() = System.Text.Encoding.GetEncoding("shift_jis").GetBytes(strIn)
Dim outBytes As Byte() = Encoding.Convert(Encoding.GetEncoding("shift_jis"), Encoding.GetEncoding("UTF-8"), bytesData)
Dim outPut As String = System.Text.Encoding.GetEncoding("UTF-8").GetString(outBytes)
みたいな感じでできませんかね(未確認)
回答ありがとうございます。
教えて頂いたコードは実行できませんでした。
というのも最終的には、outPutを出力させて
みましたが何も出力されませんでした。
追加で
IF outPut = "" THEN
Response.write("NULLかも")
END IF
としたところ、見事に?
NULLかもと表示されました。
ちなみにUTF-8のページからPOSTすると、
ちゃんと表示されます。。。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
php
-
エクセルVBAの自動変換機能?
-
オートリネーム
-
逆コンパイルと逆アセンブルの...
-
Mac 乗数の入力方法
-
MATLABのMATファイル をC言語...
-
逆ポーランド記法への変換方法...
-
Macターミナルで実行中のプログ...
-
VB6.0 SHELLで起動...
-
スロットゲームのプログラミング
-
フレームワークとプロセスの違...
-
STATUSのZフラグについて
-
CImage::ReleaseDC()のエラーで...
-
あるプログラム実行中に別のプ...
-
「単体テスト」に関する深刻な...
-
このレジの並び方は間違ってま...
-
CreateCompatibleDCを初期化時...
-
プロセスの停止
-
Linuxでのスレッド間メッセージ...
-
ACCESS側からEXCELの書式を設定...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
家電製品の電力周波数を変える機械
-
Mac 乗数の入力方法
-
3のつく数字と3の倍数のみを表...
-
エクセルVBAの自動変換機能?
-
VB.NETをJavaに変換するツール...
-
c++でmatからvectorへの変換の...
-
分を時間に変換するプログラム
-
緯度、経度の 10進法と 60進法...
-
逆コンパイルと逆アセンブルの...
-
なぜ通信には16進数文字列が使...
-
VB6からVB2010への変換について
-
10進数をBCDに変換する方法
-
C++からCへのソース変換について
-
VB6で10進数を32進数に変換する...
-
php
-
画像ファイル変換(Tiff→PDF)
-
VB.NETからJavaに変換するツー...
-
PHPで、日本語からアルファベッ...
-
WinHelpからHTML Helpに変換
-
マンセル⇔XYZ,RGB変換式或いは...
おすすめ情報