修复错误的编码

时间:2018-05-05 23:59:50

标签: javascript c# character-encoding .net-core cross-platform

我需要将以下字符'à'转换为'א'。

如果我使用以下site并选择第二个选项תיקון Encode חדש!,则会执行此操作。

我需要在C#和JavaScript中编写相同的功能。

我该怎么做?

如果有人知道我想要达到的目标(更好地定义我的问题,因为我不确定我在寻找什么),我们也将不胜感激。

由于

2 个答案:

答案 0 :(得分:1)

.Net Core支持有限数量的编码代码页 不包括希伯来语CodePage 1255或28598(ISO 8859-8)。

您需要安装此NuGet包:System.Text.Encoding.CodePages v.4.4.0
(如有必要,请在NuGet控制台中运行dotnet restore。)

要指定编码器,请使用CodePagesEncodingProvider()。希伯来语:

CodePagesEncodingProvider.Instance.GetEncoding(1255);

编码负责LTR→RTL格式化。

.NET Core 2.0的C#实现

using System.IO;
using System.Globalization;
using System.Text;

string InputText = "ààààùùìì";
string EncodedText = HebrewEncoder(InputText);
string DecodedText = HebrewDecoder(EncodedText);


private static string HebrewEncoder(string InputText)
{
    Encoding LocalEncoding = CodePagesEncodingProvider
                            .Instance.GetEncoding(CultureInfo.CurrentCulture.TextInfo.ANSICodePage);
    Encoding HebrewEncoding = CodePagesEncodingProvider.Instance.GetEncoding(1255);

    string HebrewText = string.Empty;
    byte[] OriginalBytes = LocalEncoding.GetBytes(InputText);

    using (MemoryStream memstream = new MemoryStream(OriginalBytes, 0, OriginalBytes.Length))
    using (StreamReader destReader = new StreamReader(memstream, HebrewEncoding))
    {
        memstream.Position = 0;
        HebrewText = destReader.ReadToEnd();
    };
    return HebrewText;
}

private static string HebrewDecoder(string InputText)
{
    Encoding LocalEncoding = CodePagesEncodingProvider
                            .Instance.GetEncoding(CultureInfo.CurrentCulture.TextInfo.ANSICodePage);
    Encoding HebrewEncoding = CodePagesEncodingProvider.Instance.GetEncoding(1255);

    string LocalEncodedText = string.Empty;
    byte[] OriginalBytes = HebrewEncoding.GetBytes(InputText);

    using (MemoryStream memstream = new MemoryStream(OriginalBytes, 0, OriginalBytes.Length))
    using (StreamReader destReader = new StreamReader(memstream, LocalEncoding))
    {
        memstream.Position = 0;
        LocalEncodedText = destReader.ReadToEnd();
    };
    return LocalEncodedText;
}

关于JavaScript实施,可能取决于您的上下文/工具,我建议您看看这些已经可用的GitHub库:

text-encoding
Pure JS character encoding conversion.
JsChardet
node-iconv

这些SO问题/答案供参考:

Change JavaScript string encoding
Get encoding of page/iframe via JavaScript

答案 1 :(得分:0)

所有字符都在Unicode表中。您必须将字符串转换为Unicode值,然后检查您的字符值是否替换它并将其转换回来。

希望它有所帮助。