質問するログイン新規登録

回答編集履歴

4

追伸

2021/01/27 08:48

投稿

退会済みユーザー
answer CHANGED
@@ -2,4 +2,13 @@
2
2
 
3
3
  ~~取り消してから再確認しましたが、質問者さんのケースでは文字列を JSON にシリアライズするという普通はあり得ないことをしているという、やり方のではないかと思います。~~
4
4
 
5
- またまた失礼しました。それも違いました。U+3000 はその通りでした。その隣の U+3001 とか U+3002 はエスケープされないのですが・・・ 調査してみます。
5
+ またまた失礼しました。それも違いました。U+3000 はその通りでした。その隣の U+3001 とか U+3002 はエスケープされないのですが・・・ 調査してみます。
6
+
7
+ **【追伸】**
8
+
9
+ そういう仕様らしいです。以下の記事の GrabYourPitchforks さんの回答を見てください。
10
+
11
+ Can't serializ the '\u3000' when using with UnicodeRanges.All
12
+ [https://github.com/dotnet/docs/issues/22147](https://github.com/dotnet/docs/issues/22147)
13
+
14
+ Space_Separator [Zs] category に属する [\u0020\u3000\u1680\u2000-\u2006\u2008-\u200A\u205F\u00A0\u2007\u202F] は U+0020 (半角空白) 以外はブロックされるそうです。理由は "their potential to cause problems or errors in consuming applications." だそうです。(JSON 文字列に過ぎないのにエスケープすると何故 "problems or errors" が避けられるのかは個人的には納得いきませんが)

3

訂正

2021/01/27 08:48

投稿

退会済みユーザー
answer CHANGED
@@ -1,3 +1,5 @@
1
- ~~勘違いしてました。取り消します~~
1
+ ~~打ち消し線~~~~勘違いしてました。取り消します~~
2
2
 
3
- 取り消してから再確認しましたが、質問者さんのケースでは文字列を JSON にシリアライズするという普通はあり得ないことをしているという、やり方のではないかと思います。
3
+ ~~取り消してから再確認しましたが、質問者さんのケースでは文字列を JSON にシリアライズするという普通はあり得ないことをしているという、やり方のではないかと思います。~~
4
+
5
+ またまた失礼しました。それも違いました。U+3000 はその通りでした。その隣の U+3001 とか U+3002 はエスケープされないのですが・・・ 調査してみます。

2

訂正

2021/01/27 07:34

投稿

退会済みユーザー
answer CHANGED
@@ -1,1 +1,3 @@
1
- 勘違いしてました。取り消します
1
+ ~~勘違いしてました。取り消します~~
2
+
3
+ 取り消してから再確認しましたが、質問者さんのケースでは文字列を JSON にシリアライズするという普通はあり得ないことをしているという、やり方のではないかと思います。

1

訂正

2021/01/27 07:06

投稿

退会済みユーザー
answer CHANGED
@@ -1,8 +1,1 @@
1
- System.Text.Json 名前空間の JsonSerializer.Serialize メソッドを使っ .NET オブジェクトを JSON 文字列にシリアライズすると、デフォルトで日本語の文字(多分 ASCII 文字以外はすべて)は Unicode Escape Sequence (以下 UES と書きす) という形にエスケープされます
2
-
3
- BMP 全てをエスケープしないよう設定するには JsonSerializerOptions に Encoder = JavaScriptEncoder.Create(UnicodeRanges.All) を設定すれば良いです。
4
-
5
- 詳しくは以下の記事を見てください。
6
-
7
- ASP.NET Core MVC の JSON シリアライズ
8
- [http://surferonwww.info/BlogEngine/post/2020/03/11/aspnet-core-mvc-controller-json-method-replaces-non-ascii-characters-with-5cuxxxx.aspx](http://surferonwww.info/BlogEngine/post/2020/03/11/aspnet-core-mvc-controller-json-method-replaces-non-ascii-characters-with-5cuxxxx.aspx)
1
+ 勘違いしてました。取り消します