标签: encoding

如何在C#中将字符串转换为UTF-8?

我有一个字符串,我从第三方应用程序收到,我想在我的Windows Surface上使用C#以任何语言正确显示它.

由于编码不正确,我的字符串在西班牙语中看起来像这样:

Acción

而它应该是这样的:

行动组织

根据这个问题的答案: 如何知道C#中的字符串编码,我收到的编码应该是UTF-8,但它是在Encoding.Default(可能是ANSI?)上读取的.

我试图将这个字符串转换成真正的UTF-8,但其中一个问题是我只能看到Encoding类的一个子集(仅限UTF8和Unicode属性),可能是因为我只限于windows表面API.

我已经尝试了一些我在互联网上找到的片段,但到目前为止,东方语言(即韩语)都没有成功.一个例子如下:

var utf8 = Encoding.UTF8;
byte[] utfBytes = utf8.GetBytes(myString);
myString= utf8.GetString(utfBytes, 0, utfBytes.Length);     
Run Code Online (Sandbox Code Playgroud)

我也尝试将字符串解压缩为字节数组,然后使用UTF8.GetString:

byte[] myByteArray = new byte[myString.Length];
for (int ix = 0; ix < myString.Length; ++ix)
{
    char ch = myString[ix];
    myByteArray[ix] = (byte) ch;
}

myString = Encoding.UTF8.GetString(myByteArray, 0, myString.Length);
Run Code Online (Sandbox Code Playgroud)

你们有其他想法我可以试试吗?

c# string encoding utf-8 character-encoding

138
推荐指数
6
解决办法
39万
查看次数

为什么Python在默认编码为ASCII时会打印unicode字符?

从Python 2.6 shell:

>>> import sys
>>> print sys.getdefaultencoding()
ascii
>>> print u'\xe9'
é
>>> 
Run Code Online (Sandbox Code Playgroud)

我希望在print语句之后有一些乱码或错误,因为"é"字符不是ASCII的一部分,我没有指定编码.我想我不明白ASCII是默认编码的意思.

编辑

我将编辑移动到了答案部分并按照建议接受了它.

python unicode encoding ascii python-2.x

137
推荐指数
3
解决办法
8万
查看次数

Java:如何确定流的正确charset编码

参考以下线程: Java App:无法正确读取iso-8859-1编码文件

以编程方式确定输入流/文件的正确字符集编码的最佳方法是什么?

我尝试过使用以下内容:

File in =  new File(args[0]);
InputStreamReader r = new InputStreamReader(new FileInputStream(in));
System.out.println(r.getEncoding());
Run Code Online (Sandbox Code Playgroud)

但是在我知道用ISO8859_1编码的文件中,上面的代码产生了ASCII,这是不正确的,并且不允许我正确地将文件的内容呈现回控制台.

java encoding file stream character-encoding

135
推荐指数
10
解决办法
29万
查看次数

134
推荐指数
5
解决办法
8万
查看次数

为什么PHP json_encode函数将UTF-8字符串转换为十六进制实体?

我有一个处理各种语言的PHP脚本.不幸的是,每当我尝试使用时json_encode,任何Unicode输出都会转换为十六进制实体.这是预期的行为吗?有没有办法将输出转换为UTF-8字符?

这是我所看到的一个例子:

INPUT

echo $text;
Run Code Online (Sandbox Code Playgroud)

OUTPUT

???? ????? ??????.
Run Code Online (Sandbox Code Playgroud)

INPUT

json_encode($text);
Run Code Online (Sandbox Code Playgroud)

OUTPUT

"\u0411\u0430\u0437\u0430 \u0434\u0430\u043d\u043d\u0438 \u0433\u0440\u0435\u0448\u043a\u0430."
Run Code Online (Sandbox Code Playgroud)

php encoding json

132
推荐指数
5
解决办法
17万
查看次数

更改Python的默认编码?

当我从控制台运行我的应用程序时,我有很多"无法编码"和"无法解码"的Python问题.但是在Eclipse PyDev IDE中,默认字符编码设置为UTF-8,我很好.

我四处搜索设置默认编码,人们说Python sys.setdefaultencoding在启动时删除了该功能,我们无法使用它.

那么什么是最好的解决方案呢?

python console encoding utf-8

127
推荐指数
8
解决办法
26万
查看次数

C#是否与JavaScript的encodeURIComponent()等效?

在JavaScript中:

encodeURIComponent("©?") == "%C2%A9%E2%88%9A"
Run Code Online (Sandbox Code Playgroud)

是否有C#应用程序的等价物?对于我使用的转义HTML字符:

txtOut.Text = Regex.Replace(txtIn.Text, @"[\u0080-\uFFFF]",
    m => @"&#" + ((int)m.Value[0]).ToString() + ";");
Run Code Online (Sandbox Code Playgroud)

但我不确定如何将匹配转换为JS使用的正确十六进制格式.例如这段代码:

txtOut.Text = Regex.Replace(txtIn.Text, @"[\u0080-\uFFFF]",
    m => @"%" + String.Format("{0:x}", ((int)m.Value[0])));
Run Code Online (Sandbox Code Playgroud)

返回" %a9%221a"for "©?"而不是"%C2%A9%E2%88%9A".看起来我需要将字符串拆分为字节或其他东西.

编辑:这是一个Windows应用程序中,唯一可用的项目System.Web有:AspNetHostingPermission,AspNetHostingPermissionAttribute,和AspNetHostingPermissionLevel.

.net javascript c# windows encoding

126
推荐指数
7
解决办法
9万
查看次数

是否允许包含空格的URL?

是否允许URI(特别是HTTP URL)包含一个或多个空格字符?如果必须对URL 进行编码,这+只是一个常用的约定,还是合法的替代方案?

特别是,有人可以指向一个RFC,表明必须编码带空格的URL 吗?

问题的动机:在对网站进行beta测试时,我注意到有些网址是用空格构建的.Firefox似乎做对了,让我感到惊讶!但我希望能够将开发人员指向RFC,以便他们觉得需要修复这些URL.

html url encoding http

124
推荐指数
8
解决办法
20万
查看次数

Java FileReader编码问题

我试图使用java.io.FileReader读取一些文本文件并将它们转换为字符串,但我发现结果编码错误,根本不可读.

这是我的环境:

  • Windows 2003,操作系统编码:CP1252

  • Java 5.0

我的文件是UTF-8编码或CP1252编码,其中一些(UTF-8编码文件)可能包含中文(非拉丁文)字符.

我使用以下代码来完成我的工作:

   private static String readFileAsString(String filePath)
    throws java.io.IOException{
        StringBuffer fileData = new StringBuffer(1000);
        FileReader reader = new FileReader(filePath);
        //System.out.println(reader.getEncoding());
        BufferedReader reader = new BufferedReader(reader);
        char[] buf = new char[1024];
        int numRead=0;
        while((numRead=reader.read(buf)) != -1){
            String readData = String.valueOf(buf, 0, numRead);
            fileData.append(readData);
            buf = new char[1024];
        }
        reader.close();
        return fileData.toString();
    }
Run Code Online (Sandbox Code Playgroud)

上面的代码不起作用.我发现即使文本是UTF-8编码,FileReader的编码也是CP1252.但是java.io.FileReader的JavaDoc说:

此类的构造函数假定默认字符编码和默认字节缓冲区大小是适当的.

这是否意味着如果我使用FileReader,我不需要自己设置字符编码?但我目前确实得到了错误的编码数据,处理我的问题的正确方法是什么?谢谢.

java unicode encoding file

124
推荐指数
4
解决办法
16万
查看次数

它来自哪里: - * - 编码:utf-8 - * -

Python将以下内容识别为定义文件编码的指令:

# -*- coding: utf-8 -*-
Run Code Online (Sandbox Code Playgroud)

我确实在(-*- var: value -*-)之前看过这种指令.它从何而来?什么是完整的规范,例如,值可以包括空格,特殊符号,换行符,甚至-*-本身?

我的程序将编写纯文本文件,我想使用这种格式在其中包含一些元数据.

python emacs encoding text file

123
推荐指数
3
解决办法
8万
查看次数