【问题标题】:Convert ISCII characters to its UTF-8 encoding?将 ISCII 字符转换为其 UTF-8 编码?
【发布时间】:2013-07-16 07:38:49
【问题描述】:

我想将用户输入的 ascii 编码文本转换为 UTF-8 编码,以便我可以使用任何 unicode 字体类型显示它。例如,我想将 ASCII 中的英文字母“l”显示为 Unicode 中的“ക”。我想我也需要一个映射系统,以便我可以将 l 映射到“ക”。请帮我解决这个问题。

【问题讨论】:

  • 您的用户输入的 ascii 编码文本在哪里?它在文件中吗?
  • @Tarik 不,用户将文本直接输入到文本框中。内容将采用 ASCII 编码的马拉雅拉姆语语言。我想将其转换为等效的 unicode 马拉雅拉姆语。 bcoz 我的网站以 Unicode 显示内容。谢谢
  • @Tarik 或者我想将 ascii 编码合并到 Unicode。因此,如果使用这种字体显示内容,则字符“l”将按我的要求显示。对不起我的英语不好!
  • 请注意字体与编码不同。同一个字母可以用不同的字体显示,如果我可以这样说的话,它们将以不同的风格显示相同的字符。我用我认为的完整解决方案修改了下面的答案。如果满意,请点赞。

标签: c# encoding utf-8 fonts


【解决方案1】:

您的文本采用 ISCII(印度信息交换脚本代码)。您需要将具有正确代码页的 SCII 转换为 unicode。以下方法应该可以完成这项工作。 Convert 会将给定的文本从一种编码转换为另一种编码。 GetEncoding 将为您提供 Convert 方法使用的 Encoding 对象。

示例代码可以在这里找到:http://www.dotnetframework.org/default.aspx/Net/Net/3@5@50727@3053/DEVDIV/depot/DevDiv/releases/whidbey/netfxsp/ndp/clr/src/BCL/System/Text/ISCIIEncoding@cs/1/ISCIIEncoding@cs

代码页标识符可以在这里找到: http://msdn.microsoft.com/en-us/library/windows/desktop/dd317756(v=vs.85).aspx

public static byte[] Convert(System.Text.Encoding srcEncoding, System.Text.Encoding dstEncoding, byte[] bytes) System.Text.Encoding 成员 概括: 将整个字节数组从一种编码转换为另一种编码。 参数: srcEncoding:字节的编码格式。 dstEncoding:目标编码格式。 字节: 回报: System.Byte 类型的数组,包含将字节从 srcEncoding 转换为 dstEncoding 的结果。

还有这个

公共静态 System.Text.Encoding GetEncoding(int codepage) System.Text.Encoding 成员 概括: 返回与指定代码页标识符关联的编码。 参数: codepage:首选编码的代码页标识符。 - 或 - 0,使用默认编码。 回报: 与指定代码页关联的 System.Text.Encoding。

根据维基百科的文章,马拉雅拉姆语的代码页是 57009

【讨论】:

  • 我像byte[] UniCodeText = System.Text.Encoding.Convert(Encoding.GetEncoding(57009), Encoding.UTF8, Encoding.GetEncoding(57009).GetBytes(txtContent.Text));这样转换了内容,但还是不行。
  • 马拉雅拉姆语Unicode字体不支持转换后的内容
  • 您的网页必须在标题处进行一些编码。可以请你看一下吗?
  • 我在 Visual Studio 中调试时检查了内容
  • Subin:如果你的网页是 UTF-8 并且页面编码是这样指定的,那么当用户填写一个文本框时,它应该以 UTF-8 传输。我错过了什么吗?
【解决方案2】:
Encoding.UTF8.GetString(Encoding.ASCII.GetBytes(input))

【讨论】:

    【解决方案3】:

    你的问题毫无意义。将编码从 ASCII 更改为 UTF-8 并不会神奇地将 l 变成 ,它只会更改 l 的字节表示(实际上,由于 ASCII 是 UTF-8 的子集,它不会甚至在这里这样做。它什么都不做。)

    您可能想要的是介于LatinMalayalam 字母之间的某种transliteration,但那是完全不同的东西。

    【讨论】:

    • 当我使用ASCII/ISCII编码的字体时,l代表马拉雅拉姆字母ക。但是,在 unicode 中,字母 ക 有不同的位置。即在 ASCII 中,'l' 的位置已被该特定字体中的字母 ക 占据。仪式?我想将此映射到 ക 在 unicode 中的位置。简而言之,我想将字母 l 转换为 unicode 中的 ക。
    • 要证实 Sabastien 的假设,请参阅 ldc.upenn.edu/myl/IndianScriptsUnicode.html 附录 1,梵文到罗马文的音译
    猜你喜欢
    • 2011-12-08
    • 2011-05-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-17
    • 2013-07-01
    • 1970-01-01
    相关资源
    最近更新 更多