如何编码日语字符

4

我需要开发一个程序,这是一个编码系统。

我有一些日语字符,它们是:

つれづれなるまゝに、日暮らし、硯にむかひて、心にうつりゆくよしなし事を、そこはかとなく書きつくれば、あやしうこそものぐるほしけれ

我想将这个字符串转换为以下编码形式:

不支持中文的编程语言。

我该怎么做?


1
请稍微详细地解释一下输出是什么。它是否应该是日语字符的URL编码(实际上不是)?也许如果您解释一下您想要使用“ascii key”的用途,会更有帮助。 - Paul-Jan
3个回答

8

我相信你正在寻找HttpUtility.UrlEncode,但无法确定编码以获得与你展示的完全相同的输出。

var testString = "つれづれなるまゝに、日暮らし、硯にむかひて、心にうつりゆくよしなし事を、そこはかとなく書きつくれば、あやしうこそものぐるほしけれ。";
var encodedUrl = HttpUtility.UrlEncode(testString, Encoding.UTF8);

你可能需要修改你的问题,因为将Unicode转换为ASCII是不可能的。相反,你需要进行百分比编码或URL编码(点击此处了解更多)[编辑] 我已经弄清楚了:
var testString = "つれづれなるまゝに、日暮らし、硯にむかひて、心にうつりゆくよしなし事を、そこはかとなく書きつくれば、あやしうこそものぐるほしけれ。";
var htmlEncoded = string.Concat(testString.Select(arg => string.Format("&#{0};", (int)arg)));
var result = HttpUtility.UrlEncode(htmlEncoded);

结果将完全匹配您提供的编码。

逐步操作:
var inputChar = 'つ';
var charValue = (int)inputChar; // 12388
var htmlEncoded = "&#" + charValue + ";"; // つ
var ulrEncoded = HttpUtility.UrlEncode(htmlEncoded); // %26%2312388%3b

是的,Alex,他的提问方式很令人困惑。 - Ken D
谢谢您的回答。我有一个接下来的问题。我已经测试了您的答案,它是完美的答案,对我来说很好。但是我遇到了下一个问题。我得到了这些十六进制值。我该如何将其转换为本地Unicode? - zanhtet
@zanhtet - 对不起,我不理解你的问题。 - Alex Aza

3

这是不可能的。Unicode比ASCII大得多,你无法在ASCII中查找Unicode中的每个字符。虽然ASCII只有256个字符(包括控制字符),但Unicode有数万个字符(我猜测)。


那么,我该如何更改这些单词?这是在经典 ASP 中编码的字符串。 - zanhtet

1
这里是一个看起来可以工作的函数:
public static string UrlDoubleEncode(string text)
{
    if (text == null)
        return null;

    StringBuilder sb = new StringBuilder();
    foreach (int i in text)
    {
        sb.Append('&');
        sb.Append('#');
        sb.Append(i);
        sb.Append(';');
    }
    return HttpUtility.UrlEncode(sb.ToString());
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接