質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

解決済

文字化け防止のため文字コードを統一したい

syugaaburesu
syugaaburesu

総合スコア35

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。

3回答

0評価

0クリップ

2162閲覧

投稿2020/08/03 02:53

編集2020/08/03 09:22

すみません。8/3 18時以降はパソコンがいじれないので結果報告ができません。なので明日になってしまいます。申し訳ありません

テキストファイルをアップロードしてテキストファイルの文字コードがANSI等だと文字化けが起きてしまいます。なので文字化けが起きないよう何らかの手段があれば教えてください

詳しい環境追記致します
WEBサーバ IIS8.0
serverアプリ C# ASP.NET Webフォーム

クライアント環境
GoogleCrome
Internetexplorer11

プログラムの内容を端的に言うとボタンがひとつとテキストエリアが3つあります。ボタンを押すとポップアップが表示され3つのテキストエリアのどこにファイルをアップロードするかの内容と共に3つのボタンが表示されます。ボタンにはそれぞれのテキストエリアと連動していてボタンを押すとファイル選択ダイアログが出現、テキストファイルを指定してサーバにアップロードします。更新すると選択したボタンと連動したテキストエリアにテキストの内容が表示されます

アップロードするテキストファイルは基本SJISやUTF-8等の有名所です。そのままだと文字化けしてしまうのでどの文字コードでもWeb上に表示できるようにしたいです

何度も何度も申し訳ありません。もう少し頑張ってみようと思います
下記関係あるであろうコード記載します
下記コードはファイルをアップロードして表示することは出来ます。テキストファイル内にhtmlを記述するとそれが反映できるようにもなっています。しかし、文字コードがおかしいと文字化けしてしまいます。

html

<!-- 202007311050 --> <html lang="ja"> <head> <meta charset="utf-8"> <title></title> <link rel="stylesheet" type="text/css" href="test.css" /> </head> <body> <script type="text/javascript" src="../common/jquery-3.4.1.min.js"></script> <script type="text/javascript" src="../manage/test.js"></script> <div class="version"> var:1.00 </div> <div class="caption_box1"> <fieldset><legend class="test1">test1</legend> <pre><div class="usertext" id="test1"></div></pre></fieldset> </div> <div class="caption_box2"> <fieldset><legend class="test2">test2</legend> <pre><div class="usertext" id="test2"></div></pre></fieldset> </div> <div class="caption_box3"> <fieldset><legend class="test3">test3</legend> <pre><div class="usertext" id="test3"></div></pre></fieldset> </div> <div class="caption_box4"> <label for="txtfile"> <a id="modal-open" class="button-link">ファイル取込</a> </label> </div> <!-- ここからモーダルウィンドウ --> <div id="modal-content"> <form id="fileForm"> <div>アカウント: admin</div> <input type="text" id="password"> <input type="button" id="md5Button" value="認証ボタン"> <div class="dummy"> <input type="button" id="dummyButton1" value="test1ボタン"> <input type="button" id="dummyButton2" value="test2ボタン"> <input type="button" id="dummyButton3" value="test3ボタン"> </div> </form> <p><a id="modal-close" class="button-link2">閉じる</a></p> <!-- モーダルウィンドウのコンテンツ終了 --> </div> </body> </html>

JavaScript

const HOST = "https://192.168.100.204/"; const root = HOST + "client/manage/txt/"; const test1 = "test1.txt"; const test2 = "test2.txt"; const test3 = "test3.txt"; //------------------------------------------ // 表示処理を行います //------------------------------------------ window.onload = function() { $.ajaxSetup({cache: false}); $("#test1").load(root + test1); $("#test2").load(root + test2); $("#test3").load(root + test3); $("#dummyButton1")[0].onclick = onClickDummyButton1; $("#dummyButton2")[0].onclick = onClickDummyButton2; $("#dummyButton3")[0].onclick = onClickDummyButton3; $("#md5Button")[0].onclick = onclickMd5Button; } //------------------------------------------ // 認証処理を行います //------------------------------------------ function onclickMd5Button() { var formData = new FormData(); formData.append("user_name", "admin"); formData.append("password", $("#password")[0].value); // admin $.ajax({ url : HOST + "/Server/Server/password_md5_checker.aspx", type : "POST", data : formData, cache : false, contentType : false, processData : false, dataType : "html", async: false }) .done(function(data, textStatus, jqXHR){ if(JSON.parse(data).IsMatchPassword){ document.getElementById("kekka").innerHTML = ""; document.getElementById("upload").innerHTML = ""; document.getElementById('dummyButton1').style.display = 'inline'; document.getElementById('dummyButton2').style.display = 'inline'; document.getElementById('dummyButton3').style.display = 'inline'; }else{ document.getElementById("kekka").innerHTML = "パスワードが間違っています"; document.getElementById("upload").innerHTML = ""; document.getElementById('dummyButton1').style.display = 'none'; document.getElementById('dummyButton2').style.display = 'none'; document.getElementById('dummyButton3').style.display = 'none'; } }); } //------------------------------------------ // アップロード処理を行います1 //------------------------------------------ function onClickDummyButton1() { const input = document.createElement('input'); input.type = 'file'; input.accept = '.txt, text/plain'; input.onchange = function(event) { var formData = new FormData(); formData.append("text", event.target.files[0], test1); $.ajax({ url : HOST + "/Server/Server/info_uploader.aspx", type : "POST", data : formData, cache : false, contentType : false, processData : false, dataType : "html", async: false }) .done(function(){ document.getElementById("upload").innerHTML = "test1をアップロードしました"; }); }; input.click(); } //------------------------------------------ // アップロード処理を行います2 //------------------------------------------ function onClickDummyButton2() { const input = document.createElement('input'); input.type = 'file'; input.accept = '.txt, text/plain'; input.onchange = function(event) { var formData = new FormData(); formData.append("text", event.target.files[0], test2); $.ajax({ url : HOST + "/Server/Server/info_uploader.aspx", type : "POST", data : formData, cache : false, contentType : false, processData : false, dataType : "html", async: false }) .done(function(){ document.getElementById("upload").innerHTML = "test2をアップロードしました"; }); }; input.click(); } //------------------------------------------ // アップロード処理を行います3 //------------------------------------------ function onClickDummyButton3() { const input = document.createElement('input'); input.type = 'file'; input.accept = '.txt, text/plain'; input.onchange = function(event) { var formData = new FormData(); formData.append("text", event.target.files[0], test3); $.ajax({ url : HOST + "/Server/Server/info_uploader.aspx", type : "POST", data : formData, cache : false, contentType : false, processData : false, dataType : "html", async: false }) .done(function(){ document.getElementById("upload").innerHTML = "test3をアップロードしました"; }); }; input.click(); } //------------------------------------------ // モーダルウィンドウ表示処理を行います //------------------------------------------ $(function(){ $("#modal-open").click( function(){ $( this ).blur() ; if( $( "#modal-overlay" )[0] ) return false ; $( "body" ).append( '<div id="modal-overlay"></div>' ) ; $( "#modal-overlay" ).fadeIn() ; centeringModalSyncer() ; $( "#modal-content" ).fadeIn() ; $( "#modal-overlay,#modal-close" ).unbind().click( function(){ $( "#modal-content,#modal-overlay" ).fadeOut(function(){ $('#modal-overlay').remove() ; } ) ; } ) ; } ) ; $( window ).resize( centeringModalSyncer ) ; function centeringModalSyncer() { var w = $( window ).width() ; var h = $( window ).height() ; var cw = $( "#modal-content" ).outerWidth(); var ch = $( "#modal-content" ).outerHeight(); $( "#modal-content" ).css( {"left": ((w - cw)/2) + "px","top": ((h - ch)/2) + "px"} ) ; } } ) ;
using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text; using System.Web; using System.Web.UI; using System.Web.UI.WebControls; namespace Server { public partial class info_uploader : Page { const string RELATIVE_PATH = "../../Client/Manage/txt/"; readonly string _currentPath = AppDomain.CurrentDomain.BaseDirectory; protected void Page_Load(object sender, EventArgs e) { var file = Request.Files["text"]; if (file == null) return; var filePath = string.Format(@"{0}{1}{2}", _currentPath, RELATIVE_PATH, file.FileName); file.SaveAs(filePath); var response = HttpContext.Current.Response; response.ClearContent(); response.Buffer = false; response.End(); } } }

知人に聞いたところサーバサイドでアップロードしたファイルを開いてUTF形式で保存すればライブラリを使わなくていいとの事でした。先程ご返信頂いた人の中にEncordingConverterというのがあったりするという事だったのでライブラリ云々を考えないでこんな手段があるというのがありましたら教えていただいただけると幸いです

やりたいことを簡潔にしました。タイトル等変更しました。

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

BluOxy

2020/08/03 03:03 編集

FileReaderで読み込んだ後はどのようなことを実現したいのでしょうか。目的によってはJavaScriptのFileReaderの使用をやめてサーバー(ASP.NET)側から FileStream や リソースファイルを用いてファイルを読み込み、それをブラウザに表示した方が良いかもしれません。
syugaaburesu

2020/08/03 03:08

コメントありがとうございます。 やりたい事としてはencording.jsというライブラリを使ってどんな文字コードでも表示できるようにしたいです。そのためにファイル情報が必要になるので調べてみたところFileReaderというのを見つけました。しかし、サーバにアップロードしたテキストを表示したいのでinputじゃダメなのでどうすればいいのかなという次第です
BluOxy

2020/08/03 03:58

ASP.NET には種類があります(ASP.NET Web Forms や ASP.NET MVC など) それに関連した回答をするかもしれないので、詳しい環境を記載してもらえますか。 > encording.jsというライブラリを使ってどんな文字コードでも表示できるようにしたい encoding.jsを使うことは必須でしょうか。また、ブラウザ側で文字コードの変換を行う事も必須でしょうか。サーバー(C#)からEncoding.Convert メソッドを用いて特定のエンコーディングを行った文字列をページに返すのも手です。 https://docs.microsoft.com/ja-jp/dotnet/api/system.text.encoding.convert?view=netcore-3.1
BluOxy

2020/08/03 04:08 編集

「サーバーにアップロードしたテキストをどんな文字コードでも表示できるようにしたい」が目的に読めるので、それに対する手段を何か(encoding.jsなど)に限定してしまうと、却って煩雑になる場合があります。 今回の場合、ASP.NET側から予め特定のエンコーディングをした文字列をページに埋め込んでしまえばFileReaderでファイルを読み込むという過程は必要なくなり、本来不必要であろう手順を省く事ができるかもしれません。
BluOxy

2020/08/03 04:07 編集

ユーザーの操作によって頻繁に、かつ動的に文字コードを変換しブラウザに表示するような目的であれば、encoding.jsなどのライブラリを使用した方が良いかもしれません。細かい仕様を知らないので、どちらが良いかは分かりません。
syugaaburesu

2020/08/03 04:11

すみません。詳しい環境を記載します。
BluOxy

2020/08/03 04:17

よろしくお願いします。合わせて「どんな文字コードでも表示できるようにしたい」を具体的に書いて頂けると回答しやすいです。 例えば、どのような入力(サーバにアップロードしたテキスト?)があって、どのような出力(ASCIIやUnicode等に変換した各文字コードが書かれたページ?)があるのかが知りたいです。
syugaaburesu

2020/08/03 04:25

追記しました。お手数お掛け致しますが確認お願いします
BluOxy

2020/08/03 04:28

追記ありがとうございます。要件が何となくは理解できました。しかし、あえてinputタグを使わない理由が気になりました。
BluOxy

2020/08/03 04:36 編集

また、サーバー(C#,ASP.NET)は関与しないように思えるので、この2つのタグは解除した方が良いかもしれません。inputタグによるファイルアップロードやFileReaderオブジェクト自体はブラウザ上で動作しているだけであり、サーバーとは無関係です。
SurferOnWww

2020/08/03 04:38

> やりたい事としてはencording.jsというライブラリを使ってどんな文字コードでも表示できるようにしたいです。そのためにファイル情報が必要になるので調べてみたところFileReaderというのを見つけました。しかし、サーバにアップロードしたテキストを表示したいのでinputじゃダメなのでどうすればいいのかなという次第です 上の「サーバにアップロードしたテキストを表示したい」というところをもっと詳しく具体的に書けませんか? ファイルはサーバーに存在するというところから話が始まるのであれば、「FileReaderで読み込ます」とか「encording.jsというライブラリを使ってどんな文字コードでも表示できるようにしたい」というのは全くの見当違いで、この質問は最初から完全に迷走していると思います。 FileReader とか encording.js は忘れて、最初から考え直した方がよさそうです・・・が、もっと具体的かつ詳細にやりたいことを書いてもらえないとアドバイスするのも難しそうです(勝手に想像してアドバイスすると、想像が違っていた場合混乱を招くばかりですし)。
syugaaburesu

2020/08/03 04:41

inputに関してなのですがfileですと選択しただけで終わってしまいサーバにアップロードする余地がなかったからです(自分の知識不足かもしれません)なのでtype=buttonにしてアップロードする余地を作りました
BluOxy

2020/08/03 04:42

> ファイル選択ダイアログが出現、テキストファイルを指定してサーバにアップロードします。更新すると選択したボタンと連動したテキストエリアにテキストの内容が表示されます を見て想像するに、テキストエリアが動的に更新するようなページが作りたいのだと読めました。 ということはこの文章における「サーバー」という言葉の使い方が不適切であり、おそらくブラウザ≒サーバーになっているのではないかと思いました。 そして、syugaaburesuさんがまず知りたいのは「inputタグを使わずにファイルをブラウザへアップロードする方法」だと読めました。(合っていますか)
SurferOnWww

2020/08/03 04:45

なぜ ASP.NET のタグを外したのですか? サーバー側の処置が必要が必要なら(必要ですよね?)ASP.NET のタグは外すべきではないですけど。
syugaaburesu

2020/08/03 04:52

すみません、こちらのサイトを使ったのが初めてで困惑してしまいました。 初めてのフレームワークにしてはちょっと荷台が重かったかもしれないです...ブラウザ≒サーバーにはなっていませんが知識不足が招いた結果になってますね。申し訳ありません。
BluOxy

2020/08/03 04:56

> テキストファイルを指定してサーバにアップロードします。更新すると選択したボタンと連動したテキストエリアにテキストの内容が表示されます アップロード後、ページが更新されるのでしょうか(HTTPリクエストが送信されるのか)。 もしくはHTML要素が書き換わるだけでしょうか。 前者ならASP.NETと関係があります。後者はJavaScriptのみで対処できます。
syugaaburesu

2020/08/03 04:59

前者です。POSTで送信します
SurferOnWww

2020/08/03 05:01

話は通じてますか? アップロードしたテキストファイル(文字コードは Shift_JIS 他いろいろ)をブラウザに表示したいのですよね? であれば、サーバー側(ASP.NET のコード)でテキストファイルを正しい文字コードで読むという操作が必要です。ASP.NET のタグは外せないですよ。 それとも、もうギブアップでこのスレッドでの Q&A は続ける必要はなくなったということですか? それならそれで構いませんので、その旨質問者さんの方で回答欄に書いてこのスレッドはクローズしてください。
BluOxy

2020/08/03 05:03

なんだか混乱を招いていたらすみません。前者ならASP.NETによる手続きが必要ですね。 自分は後者と読めてしまいました。まさにSurferOnWwwさんが仰っていた > 勝手に想像してアドバイスすると、想像が違っていた場合混乱を招くばかり だったようです。
syugaaburesu

2020/08/03 05:07

いえいえ、大丈夫です。自分の知識不足でした。御二方のお時間費やしてしまい本当に申し訳ありません。もっと簡単なやつから勉強したいと思います。ありがとうございましたm(_ _)m
SurferOnWww

2020/08/03 08:36 編集

追記されたコードを拝見しました。質問者さんが書いたのですか? もし、誰か他の人が書いたコードに手を加えているということなら、書いた人に質問した方が良いと思うのですが、とりあえずそれは置いといて・・・  > 下記コードはファイルをアップロードして表示することは出来ます。 どのタイミングでどこにどのようにして表示しているのですか? 表示するためのコードが見当たりませんが、どれですか? アップロードされたテキストファイルは file.SaveAs(filePath); で物理パス filePath に保存しているのですよね? それがホントにできているかかなり疑問です。間違いなく保存できているのですか? そして、表示というのは具体的にどうやっているのですか? 最初の話では、ASP.NET の C# のコードで物理パス filePath からテキストファイルを読みだしてきて、ページのテキストエリアに表示するという話だったと理解していますが、そのためのコードが見当たりません。 テキストエリアというのは多分 <div class="usertext" id="test1~3" ... のことではないかと思っていますが、どのタイミングでどのようにして書き込んでいるのですか? 物理パス filePath からテキストファイルを読みだして来るというわけではなくて、直接 HttpPostedFile からファイルの中身を読んできて、それをページのテキストエリアに表示するという話なのですか? そうだとしてもそのコードは見当たりませんが、どこにあるのですか?
syugaaburesu

2020/08/03 08:43

こちらは自分で作成しました。サイトからコピーしたものもありますが...大抵は自分です。 >どのタイミングでどこにどのようにして表示しているのですか? 表示するためのコードが見当たりませんが、どれですか? 表示はjsの表示処理を行いますに記載してあります。idにそって.loadで表示してます。 >アップロードされたテキストファイルは file.SaveAs(filePath); で物理パス filePath に保存しているのですよね? それがホントにできているかかなり疑問なのです。間違いなく保存できているのですか? 間違いなくテキストファイルをアップロードしたらそちらに変更されます。動画とかアップロードできたらいいんですけど方法が分かりません
SurferOnWww

2020/08/03 09:38

> 表示はjsの表示処理を行いますに記載してあります。idにそって.loadで表示してます。 見逃してました・・・が、ajax の応答が返ってきたときにも window.onload イベントは発生するのでしたっけ? > 間違いなくテキストファイルをアップロードしたらそちらに変更されます。 コードの一部は以下のようになっていて、それを連結してパスを取得してましたが、それで間違いなく正しく物理パスが取れるのですか? const string RELATIVE_PATH = "../../Client/Manage/txt/";
syugaaburesu

2020/08/03 09:47

>ajax の応答が返ってきたときにも window.onload イベントは発生するのでしたっけ? 発生しないです。再ロードします >コードの一部は以下のようになっていて、それを連結してパスを取得してましたが、それで間違いなく正しく物理パスが取れるのですか? 少し下のfilepathのところでfile.filenameがあるので大丈夫だと思っていました。実際取れているので大丈夫だと思います
SurferOnWww

2020/08/03 10:14 編集

> 発生しないです。再ロードします それ、書いてありましたっけ? 全く想定外の話なので分からなかったのですけど・・・ 何にせよ、ページに表示する文字コードはデフォルトで UTF-8 なので、テキストファイルの文字コードがそれ以外の時はどこかで変換してやらないと文字化けすると思います。なので、.load はダメでしょう。 それ以前に、セキュリティ対策に HTML Encode しないとダメですし、改行を <br /> に変換する必要もあるはずです。 info_uploader で文字コードの変換、HTML Encode、改行の <br /> に変換などの必要な処置を行ったらその文字列を応答として返し、それを .done(function() ... の引数で受けて表示するということではいかが? > 実際取れているので大丈夫だと思います "../../Client/Manage/txt/" という文字列を連結してそんなことができるとは考えられないのですが・・・ 実際どういう文字列が取得できているか教えてもらえませんか?
syugaaburesu

2020/08/03 10:36

>info_uploader で文字コードの変換、HTML Encode、改行の <br /> に変換などの必要な処置を行ったらその文字列を応答として返し、それを .done(function() ... の引数で受けて表示するということではいかが? ある程度分かってきました。明日やってみます >"../../Client/Manage/txt/" という文字列を連結してそんなことができるとは考えられないのですが・・・ 実際どういう文字列が取得できているか教えてもらえませんか? 各ボタンクリックで →../../Client/Manage/txt/test1txt" →../../Client/Manage/txt/test2txt" →../../Client/Manage/txt/test3txt" が取得されます
syugaaburesu

2020/08/03 10:38

すみません.が抜けてました
SurferOnWww

2020/08/03 10:44

> 各ボタンクリックで > →../../Client/Manage/txt/test1txt" > →../../Client/Manage/txt/test2txt" > →../../Client/Manage/txt/test3txt" が取得されます 話が通じてますか? Windows OS のファイルシステムの物理パスの話ですよ。
BluOxy

2020/08/03 10:49 編集

Q&Aのコミュニケーションでは、至急性がある訳ではないので、余程日時が開かない限りは急く必要はありません。謝る必要もありません。明日でも構わないですから、ゆっくり考えた上でかつメンタルの強い状態でコメントには可能な限り対応をお願いします。
syugaaburesu

2020/08/03 10:54

物理パスというのは対象のファイルが存在してる場所ではないのですか?今回 @"{0}{1}{2}", _currentPath,RELATIVE_PATH,file.FileName);file.SaveAs(filePath); 上記コードで保存場所のパスを作ってsaveasで保存しているのですがそれとは別の話でしょうか。すみません
SurferOnWww

2020/08/03 11:16 編集

デバッガでブレークポイントを以下の行の下に設定して、 var filePath = string.Format(@"{0}{1}{2}", _currentPath, RELATIVE_PATH, file.FileName); そこで止めて、filePath がどうなっているか書いてください。
syugaaburesu

2020/08/04 00:23

"C:\\Proxy\\Server\\Server\\../../Client/Manage/txt/test1.txt" が返ってきました
SurferOnWww

2020/08/04 00:40

../../ というのは URL の相対パスの一部なのですが、そういうのが混ざっていても物理パスとして有効なのですか? そういうのは初めて見ました。そのフォルダはどこにあるのか把握できてますか? 何故ここにこだわっているかと言うと、file.SaveAs(filePath); の filePath の物理パス C:\Proxy\Server\Server\../../Client/Manage/txt/test1.txt が、$("#test1").load(root + test1); の URL https://192.168.100.204/client/manage/txt/test1.txt が該当するサーバー上の物理パスと違うとすると、話が始まらないからです。
syugaaburesu

2020/08/04 00:45

はい、どこにあるかは把握できています。もしかしたらVM上でやっているかつ疑似サーバとして動かしているのが原因かもしれないです。 こうやって話しているときに申し訳ありませんが。ほかの方に助言をいただいて調べていたものを使ってみたら保存したファイルを全部UTF-8に書き換えることができましたので一応今回の問題は解決しました。
SurferOnWww

2020/08/04 00:50

質問者さん、ASP.NET Web Forms アプリの知識はあまりないようですね。 ASP.NET Web Forms アプリでは、アプリケーションルート化の URL(仮想パス)に該当するサーバーの物理パスの取得には HttpServerUtility.MapPath メソッドを使います。 また、ブラウザによっては HttpPstedFile.FileName はクライアント側でのフルパスになることがあるので Path.GetFileName を使うのが必須です。 そのあたりを見直してみてください。 ところで、ファイル名は const test1 = "test1.txt"; のようにハードコーディングされている一方、アップロードするファイル名はユーザーの任意になるはずで、それを file.FileName で取得して使うと違った名前になりませんか?
SurferOnWww

2020/08/04 00:54

> ほかの方に助言をいただいて調べていたものを使ってみたら保存したファイルを全部UTF-8に書き換えることができましたので一応今回の問題は解決しました。 その「ほかの方」というは質問に以下のように書いてあった「知人」ですか? > 知人に聞いたところサーバサイドでアップロードしたファイルを開いてUTF形式で保存すればライブラリを使わなくていいとの事でした。
SurferOnWww

2020/08/04 01:03

「ほかの方」=「知人」なら、そもそもここ Teratail で聞く必要はなくて最初から知人に相談するべきだったのでは? 自分としては無駄に時間を使わされたという感じですね。 問題解決でこれ以上 Q&A は必要ないということのようですので、 「ほかの方に助言をいただいて調べていたものを使ってみたら保存したファイルを全部UTF-8に書き換えることができました」というのを具体的にどのようにしたのか回答欄に書いて、このスレッドはクローズしてください。
syugaaburesu

2020/08/04 01:14

>質問者さん、ASP.NET Web Forms アプリの知識はあまりないようですね。 今回が初めて取り組んだものでおっしゃる通りあまり理解できておりません。 >ところで、ファイル名は const test1 = "test1.txt"; のようにハードコーディングされている一方、アップロードするファイル名はユーザーの任意になるはずで、それを file.FileName で取得して使うと違った名前になりませんか? アップロードする部分のaspxは参考したものが多いのでいまいち自分も理解できていないのですが恐らくjs上のformdataという所でどのテキストかを決めている?(言い方がおかしいかもしれません)なのでfile.fileNameが 既存のになってそこに上書きされるのかなと考えておりました >その「ほかの方」というは質問に以下のように書いてあった「知人」ですか? いえ、BluOxyさんです。アップロードされた全てのファイルはある特定の文字コードとして保存されるようにしましょう。というのがあったのでそちらを試してみたところすべてUTF-8で保存できましたので文字化けの心配は恐らく大丈夫だと思います。
syugaaburesu

2020/08/04 01:15

長時間大変申し訳ありません。自分としては多く学べることがあったのでとてもありがたいです。これから質問していくことがあったらなるべく明確にしていきます。ありがとうございました。
BluOxy

2020/08/04 02:18

おめでとうございます。私の回答で解決されたのであれば、それをBAに選んで質問のクローズをお願いします。 > これから質問していくことがあったらなるべく明確にしていきます。 teratailでは 質問するときのヒント が用意されているので参考にしてください。 https://teratail.com/help/question-tips
SurferOnWww

2020/08/04 03:13

> アップロードされた全てのファイルはある特定の文字コードとして保存されるようにしましょう。というのがあったのでそちらを試してみたところすべてUTF-8で保存できました それは具体的にどのようにしたのかを回答欄に書いて、このスレッドはクローズしてください。 ユーザーが勝手に Shift_JIS, UTF-8, UTF-16 BE, UTF-16 LE 等々の文字コードを使ってテキストファイルを作り、それらをアップしてくるような場合、どうやってアップロードされたファイルからその文字コードを判別してそれを UTF-8 に変換できるようにしたのか興味があります。是非教えてほしいです。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

ASP.NET

ASP.NETは動的なWebサイトやWebアプリケーション、そしてWebサービスを構築出来るようにする為、Microsoftによって開発されたウェブアプリケーション開発フレームワークです。