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

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

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

Unicodeはエンコーディングの標準規格です。1つの文字コード体系で多国語の表現を可能にすることを目指して作られています。

JavaScript

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

Q&A

解決済

2回答

671閲覧

JavascriptでUnicodeを文字列にアンエスケープしたい

thunder_bolt

総合スコア1

Unicode

Unicodeはエンコーディングの標準規格です。1つの文字コード体系で多国語の表現を可能にすることを目指して作られています。

JavaScript

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

0グッド

0クリップ

投稿2023/08/01 06:35

実現したいこと

文字列とUnicodeが混ざったテキストでUnicodeだけをアンエスケープして、文字列を完成させたい。

「私は\u5c71\u7530\u592a\u90ceです。\u3088\u308d\u3057\u304f\uff01」
↓案エスケープ
「私は山田太郎です。よろしく!」

前提

JavascriptでUnicodeと文字列が混合されたテキストファイルで、Unicodeの部分を文字列へアンエスケープし、取得するコードを作っています。

試したこと

Unicode部分だけを取得して、アンエスケープするコードはかけています。(Code1参照
また、Unicode以外の文字列も配列として抜き出し、取得することもできています。(Code2参照

ですが、ここからどう処理させれば、希望通り動くのかがわかりません。
分かる方がいらっしゃいましたらお力添えいただけますと幸いです。

該当のソースコード

Javascript

1// Code1 2function unicodeUnescape(str) { 3 let result = '', strs = str.match(/\\u.{4}/ig); 4 if (!strs) return ''; 5 for (var i = 0; i < strs.length; i++) { 6 result += String.fromCharCode(strs[i].replace('\\u', '0x')); 7 } 8 9 return result; 10}

Javascript

1// Code2 2function getString(str) { 3 let spl_str = str.split(/\\u.{4}/); 4 let arr = []; 5 for (let i = 0; i < spl_str.length; i++) { 6 if (spl_str[i] != '') { 7 arr.push(spl_str[i]); 8 } 9 } 10 return arr; 11}

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

Encoding.jsを利用するとか・・・

javascript

1<script src="https://cdnjs.cloudflare.com/ajax/libs/encoding-japanese/2.0.0/encoding.min.js"></script> 2<script> 3const unicode="私は\u5c71\u7530\u592a\u90ceです。\u3088\u308d\u3057\u304f\uff01"; 4const blob = new Blob([new Uint8Array(Encoding.convert(Encoding.stringToCode(unicode), 'utf8', 'unicode'))]); 5new Response(blob).text().then(console.log); 6</script>

投稿2023/08/01 07:50

yambejp

総合スコア114845

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

thunder_bolt

2023/08/01 08:11

ご回答いただきありがとうございます。 encoding.jsというライブラリがあったのですね。 参考にさせていただきます。
guest

0

ベストアンサー

ここからどう処理させれば、希望通り動くのかがわかりません。

ここから作るより、replace関数を渡して、/\\u.{4}/gにマッチしたものを対応する文字に置き換える、という方法のほうが楽かと思います。

投稿2023/08/01 06:44

編集2023/08/01 06:46
maisumakun

総合スコア145184

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

thunder_bolt

2023/08/01 07:22

ご回答いただきありがとうございます。 >replaceに関数を渡して 申し訳ありません、渡す関数はmatch関数のことであっていますでしょうか?
thunder_bolt

2023/08/01 08:15

replaceの置き換え先で文字の変換を行う関数を指定することで希望の動きとなりました。 ご教示いただきありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問