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で質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) エクセルのVBAについて とあるサイトのコードを参考に、CSVの文字化けを直すVBAを作成しているの 7 2022/11/04 14:15
- PHP PHP MySql 画像を取得 1 2022/06/04 14:05
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- PHP php ログイン 1 2022/11/01 00:24
- PHP 入力した部分を表示させたまま(保持)するにはどうすれば良いでしょうか? 1 2023/01/25 11:14
- PHP PHPでCookieを使った訪問回数について 1 2023/05/28 14:10
- PHP PHPのエラーの解消法について教えて下さい。 1 2023/02/06 10:48
- JavaScript switch文のswitch(n)の部分を複数の値にするか、if文に変えてほしいです。 1 2022/07/27 17:18
- Excel(エクセル) マクロでテキストファイルを読み込んだ際の最終セルにデータと改行が含まれる問題の改善方法 2 2022/03/25 16:50
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/15 15:48
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
緯度、経度の 10進法と 60進法...
-
なぜ通信には16進数文字列が使...
-
逆コンパイルと逆アセンブルの...
-
画像ファイル変換(Tiff→PDF)
-
3のつく数字と3の倍数のみを表...
-
VB6で16進のXOR演算
-
VisualBasicをC++に変換する方...
-
VBAを使って二進法計算
-
変換のプログラムを教えてくだ...
-
tex 郵便記号のだしかた
-
画像ファイルから.icoフォーマ...
-
ASP.NET SJIS→UTF-8文字コード...
-
PDFからTIFFに変換できるフリー...
-
MSXMLとは?
-
分を時間に変換するプログラム
-
bmp→jpgに、jpg→bmpに
-
VB.NETをJavaに変換するツール...
-
逆ジオコーディング機能
-
SJIS⇔UTF-8の文字コード...
-
VBA 置き換え後元に戻したい時
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
緯度、経度の 10進法と 60進法...
-
Mac 乗数の入力方法
-
3のつく数字と3の倍数のみを表...
-
10進数をBCDに変換する方法
-
bmp→jpgに、jpg→bmpに
-
エクセルVBAの自動変換機能?
-
アセンブラ言語の数字を数値に...
-
なぜ通信には16進数文字列が使...
-
SJIS⇔UTF-8の文字コード...
-
C++からCへのソース変換について
-
分を時間に変換するプログラム
-
UTF8→ShiftJISに変換したいです!
-
家電製品の電力周波数を変える機械
-
マンセル⇔XYZ,RGB変換式或いは...
-
VB.NETをJavaに変換するツール...
-
画像ファイル変換(Tiff→PDF)
-
PHPで、日本語からアルファベッ...
-
魚眼レンズの画像処理
-
C#で漢字→ローマ字を変換
-
StrConvの使い方について教えて...
おすすめ情報