
特定の文字が中国語かどうかを判定したいと思っています。
その際、日本語として存在する漢字については日本語として判定したいです。
そのために色々調べて、下記サイトを参考に試してみました。
https://qiita.com/Saqoosha/items/927e9d6e77922ad …
例えば、「国」の漢字の場合は、
日本語:国
簡体字:国
繁体字:國
ですが、上記のサイトのやり方だと簡体字として判定されてしまいます。
日本語として存在する漢字は日本語、中国語にしかない漢字を中国語として
判定したいのです。
そのようなやり方をご存知の方がいらっしゃいましたら、
教えていただけないでしょうか。
以上、よろしくお願い致します。
No.1ベストアンサー
- 回答日時:
対象の文字が Unicode ならば、
文字コードを変換して UTF-8/16 → CP932 にできれば
日本語として存在する文字と判断してよいかと思います。
参考)
https://docs.microsoft.com/ja-jp/dotnet/api/syst …
https://docs.microsoft.com/ja-jp/dotnet/api/syst …
アドバイスありがとうございます。
教えていただいたサイトを参考に以下のようなロジックを作ったところ、思ったような動きをしてくれました。
Sub Main()
Dim str As String = ConvertToPinYin("Aあ91.你好")
Console.WriteLine("変換後 = {0}", str)
Dim str As String = ConvertToPinYin("aă")
Console.WriteLine("変換後 = {0}", str)
End Sub
No.2
- 回答日時:
そのサイトのやり方だと「対応する簡体字があれば繁体字」「対応する繁体字が存在すれば簡体字」と判定するはずだから, 当然そうなっちゃうね.
とはいっても本質的にはその方法しかないわけで. 端的にいえば「日本語として存在する漢字」の一覧を持って, その中にあるかどうかを判定することになる. 「日本語として存在する」かどうかは極論「自分の目で決める」んだけど, JIS の範囲内であれば文字コードの変換で何とかなる... かなぁ.
自力で頑張るなら, サロゲートペアや異体字セレクタまで頭を使わないといけないかも.
言語タグがあったらどうするんだろう.
そもそものやりたいことを申しますと、人名に関して、日本語にはない漢字についてはピンインに変換する、日本語の場合はそのまま、それ以外の場合(例えば ă など)についてはエラーと判断するということです。
故に文字列の中(人名)に言語タグなど特殊なものは含まれない前提です。
良く考えると簡体字や繁体字に関わらずそれ以外の漢字も含めて、日本語にはない漢字の場合はピンインにしたいので、元々参考にしていたサイトの条件は無くして、補足に書かせてもらったようなロジックでいけそうだなと思っています。
アドバイスありがとうございました!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 日本語 中国語と日本語とでは、どちらが先に漢字を廃止するでしょうか? 2 2023/01/29 13:45
- 中国語 中国人の漢字のふりがな 2 2022/10/07 18:25
- 日本語 日本語はどのくらい難しいですか? 日本育ちの日本人です。 漢字検定の勉強をしてるのですが、同じ言葉で 3 2022/07/12 13:09
- 中国語 ドイツ語と中国語を勉強したいと思っています。 中国語の方が漢字だから何となく分かる。 横浜中華街に行 9 2022/08/13 02:52
- 日本語 漢字ひらがなカタカナと使える日本人って凄いですよね、というか日本語って凄いですよね? 中国とか韓国語 2 2022/11/11 09:22
- 日本語 中国語の漢字と日本語の漢字ってどっちが難しいのでしょうか? 3 2023/05/15 21:01
- 中国語 新しい中国語入力ソフトを発明しました 22 2023/02/06 07:13
- メディア・マスコミ 最近の報道で韓国や北朝鮮の人物の名前はその国の呼び方(発音)なのになぜ中国の人物は漢字の日本語読みな 5 2022/05/24 04:03
- その他(言語学・言語) 厳密に言うと漢字使用言語の筆記能力は 実使用の日本語、中国語 使用者以外かなり困難で 2 2022/04/18 10:25
- 日本語 ある言語を外国語として学習した場合、 1 2022/05/22 14:48
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
「〜は終わっていますか?」を...
-
「一回ずつ」でしょうか「一回...
-
「オールオッケー」という言葉...
-
「毎」の読み方
-
またご一緒できたら嬉しいです...
-
私なんてまだまだですよ〜みた...
-
人生をかける、の漢字はどれ?
-
外国人の先生が日本語で書いた文
-
同じを表す「〃」や「々」は英...
-
「じゃ」を「ぢゃ」、「言う」...
-
ぱ(PA)行で始まる日本人の名字...
-
若い女性がホントに信頼してい...
-
お風呂に入る というのは take ...
-
何名様ですか?2名です・・・...
-
参った狸・・・
-
マザボのVRMフェーズ数が3つの...
-
写真の①と②の赤線部分、①でも良...
-
「敵ながらあっぱれ」の逆のこ...
-
面倒くさい事は先にする方です...
-
英語
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「〜は終わっていますか?」を...
-
「一回ずつ」でしょうか「一回...
-
「毎」の読み方
-
「ピンポイント」という日本語...
-
「オールオッケー」という言葉...
-
同じを表す「〃」や「々」は英...
-
TEXT( ,"ddd")で英語曜日が表示...
-
英語のビジネスメールで
-
私なんてまだまだですよ〜みた...
-
「上から順に希望順です」とい...
-
リセッションの反対語は?
-
役職名の表記で「営業統括部」...
-
またご一緒できたら嬉しいです...
-
右クリックしたときに出てくる...
-
「全頁」何と読みますか(ふり...
-
ぱ(PA)行で始まる日本人の名字...
-
Not my business. 日本語では、...
-
MPC-HCの日本語版
-
「あと」と「後」の違い
-
会計用語の「AP or/and AR」...
おすすめ情報
Public Function ConvertToPinYin(ByVal str As String) As String
If String.IsNullOrEmpty(str) Then
Return String.Empty
End If
Dim PYstr As String = ""
For Each item As Char In str.ToCharArray
Try
Dim cc As New ChineseChar(item)
If IsJapanese(item) Then
PYstr = PYstr + item.ToString
Else
PYstr = PYstr + cc.Pinyins(0).Substring(0, cc.Pinyins(0).Length - 1)
End If
Catch ex As Exception
If IsJapanese(item) Then
PYstr = PYstr + item.ToString
Else
PYstr = "ERROR"
Exit For
End If
End Try
Next
End Function
Private Function IsJapanese(ByVal str As String) As Boolean
Try
Dim shiftjis As Encoding = Encoding.GetEncoding("shift-jis", New EncoderExceptionFallback(), New DecoderExceptionFallback())
Dim bytes() As Byte = shiftjis.GetBytes(str)
Return True
Catch ex As Exception
Return False
End Try
End Function
Ogre7077様
ロジックが長かったため、補足に跨って載せました。
有益な情報ありがとうございました!
##実行結果##
変換後 = Aあ91.NI好
変換後 = ERROR
※ピンインの変換には「Simplified Chinese Pin-Yin Conversion Library」を使っており、以下のインポートをしています。
Imports Microsoft.International.Converters.PinYinConverter