标签: encoding

base64和UTF-8编码问题

我正在编写一个返回byte []的简单Web方法,而byte []由UTF-8编码.我已经调查了相关的WSDL和soap消息,似乎底层的Web服务堆栈将使用base64编码?

由于各种原因,我无法使用或重新编码从UTF-8到base64的返回字节[].有什么想法将base64编码修改为UTF-8编码?

这是我在WSDL中的相关Web方法,SOAP消息和相关类型

Web服务服务器端代码

        [WebMethod]
        public byte[] HelloWorld2()
        {
            return utf8encodedbytes;
        }
Run Code Online (Sandbox Code Playgroud)

SOAP响应

<?xml version="1.0" encoding="utf-8"?>
<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">
  <soap:Body>
    <HelloWorld2Response xmlns="http://tempuri.org/">
      <HelloWorld2Result>base64Binary</HelloWorld2Result>
    </HelloWorld2Response>
  </soap:Body>
</soap:Envelope>
Run Code Online (Sandbox Code Playgroud)

WSDL中的相关类型

xsd:base64Binary
Run Code Online (Sandbox Code Playgroud)

乔治,提前谢谢

c# base64 encoding utf-8

0
推荐指数
1
解决办法
6378
查看次数

为什么 C# Unicode 范围覆盖有限范围(最多 0xFFFF)?

我对 C# UTF8 编码感到困惑......

假设这些“事实”是正确的:

  1. Unicode 是定义每个字符的“协议”。
  2. UTF-8 定义了“实现”——如何存储这些字符。
  3. Unicode 定义字符范围从 0x0000 到 0x10FFFF(来源

根据C# 参考,每个字符的可接受范围是 0x0000 到 0xFFFF。我不明白 0xFFFF 以上并在 Unicode 协议中定义的另一个字符怎么样?

与 C# 相比,当我使用 Python 编写 UTF8 文本时,它覆盖了所有预期范围(0x0000 到 0x10FFFF)。例如:

u"\U00010000"  #WORKING!!!
Run Code Online (Sandbox Code Playgroud)

这不适用于 C#。更重要的是,当我用Python将字符串u"\U00010000"(单个字符)写入文本文件,然后从C#中读取它时,这个单字符文档在C#中变成了2个字符!

# Python (write):
import codecs                        
with codes.open("file.txt", "w+", encoding="utf-8") as f:                        
    f.write(text) # len(text) -> 1

// C# (read): 
string text = File.ReadAllText("file.txt", Encoding.UTF8); // How I read this text from file.
Console.Writeline(text.length); // 2
Run Code Online (Sandbox Code Playgroud)

为什么?怎么修?

c# unicode encoding utf-8

0
推荐指数
1
解决办法
2092
查看次数

JSON 编码器返回Optional()

我正在尝试对我的 jsonData 进行编码。一切正常,但有一个例外 - 我收到的是输出Optional(my_json_string)。但我只想收到my_json_string

当我更改req.httpBody = jsonData为时req.httpBody! = jsonData,我收到错误。

do {
    let jsonData = try encoder.encode(self)
    let jsonString = String(data: jsonData, encoding: .utf8)
    req.httpBody = jsonData
    print ("httpBody is: ", jsonString)
} catch {
    //TODO:error handling
}
Run Code Online (Sandbox Code Playgroud)

如何正确执行此操作并从可选中解开我的 JSON 字符串?

encoding json swift

0
推荐指数
1
解决办法
203
查看次数

python 3 - UnicodeEncodeError:“charmap”编解码器无法编码字符(编码,使其位于文件中)

我目前正在尝试获取某个帐户的推文并将其以特定格式写入文件中,但有时该帐户使用表情符号和编解码器之外的其他字符,因此在读取推文时,Python 会崩溃并给出以下错误(它不喜欢的特定字符是希腊字母“\xcf\x87”,如果这有任何帮助的话,尽管我需要一个可以与Python不喜欢的任何字符一起使用的修复程序):

\n\n
UnicodeEncodeError: \'charmap\' codec can\'t encode character \'\\u03c7\' in position 4: character maps to <undefined>\n
Run Code Online (Sandbox Code Playgroud)\n\n

我尝试添加.encode("utf-8")到字符串的末尾,但是当我实际上需要将单词写入不同的行时,最终会将原始文本数据写入文件。这是我到目前为止的代码(代码本身可以工作,因为它读取数据并将其放入我需要的格式,所以我不需要这方面的帮助,只需写入文件部分。) :

\n\n
    with open("LSData.txt", "a") as file:\n        for status in tl:\n            wordList = status.full_text.split(" ")\n            for word in wordList:\n\n                try:\n                    if("http" not in word):\n                        if(word == wordList[0] or\n                           wordList[wordNum-1][len(wordList[wordNum-1])-1] == "." or\n                           wordList[wordNum-1][len(wordList[wordNum-1])-1] == "!" or\n                           wordList[wordNum-1][len(wordList[wordNum-1])-1] == "?"):\n\n                            wordsToAdd = "-"  + word + " " + wordList[wordNum+1] + "\\n"\n                            file.write(wordsToAdd)\n\n                        else:\n                            wordsToAdd = word + " " …
Run Code Online (Sandbox Code Playgroud)

python unicode encoding python-3.x

0
推荐指数
1
解决办法
3248
查看次数

当 UTF 是多字节且 latin1 是单字节时,为什么会出现错误?

我正在通过 pandas.read_csv() 读取 CSV 文件。当指定 enconding = UTF-8 或 16 时,会出现错误。

“utf-8”编解码器无法解码位置 127 中的字节 0xa3:起始字节无效

我的疑问是,当UTF是多字节编码而latin1是单字节编码时,为什么我在使用UTF-8或16时会出现错误,但使用latin1却可以正常工作?UTF不应该更优越并且可以解码所有字符吗?

提前致谢。

尝试编码= latin1,'cp1252','iso-8859-15'

python encoding utf-8 pandas

0
推荐指数
1
解决办法
566
查看次数

为什么没有以 0xC1 开头的 Unicode?

在研究Unicode和utf-8编码的同时,

我注意到utf-8编码的第129个Unicode以0xc2开头。

我检查了0xcf的最后一个字母。

没有 Unicode 将 0xc1 编码为 0xc1。

为什么第 129 个 unicode 是从 0xc2 开始而不是从 0xc1 开始?

unicode encoding utf-8

0
推荐指数
1
解决办法
1256
查看次数

在 django live 应用程序中将 mysql 数据库从“utf8”更改为“utf8mb4”对数据的影响

我正在使用 Apache 2 通过 MySQL 后端为 Django 应用程序提供服务。我已将数据库的字符集配置为“utf8”,我也想存储表情符号,所以我需要将编码更改为“utf8mb4”,我只是想知道如果我更改配置会影响我的数据吗?这是我的 mysql.cnf 文件

[client]
database = 'databasename'
user = 'username'
password = 'password'
default-character-set = utf8
Run Code Online (Sandbox Code Playgroud)

这是我的 mysql 数据库的 django 设置

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'OPTIONS': {
            'read_default_file': '/path/to/mysql.cnf'
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

它会对我之前保存的数据产生什么影响?另外,我应该如何做,我应该直接将其添加default-character-set = utf8mb4到我的默认配置文件中吗?

python mysql database django encoding

0
推荐指数
1
解决办法
2430
查看次数

将UTF8字符串转换为UCS-2并替换java中的无效字符

我对 UTF8 感到困惑:

\n
\n

“RedR\xc3\xb6ses”

\n
\n

我需要将其转换为有效的 UCS-2(或没有 BOM 的固定大小 UTF-16BE,它们是相同的东西)编码,因此输出将是:\n“Red R\xc3\xb6ses”作为“”输出UCS-2 的射程。

\n

我尝试过的:

\n
 @Test\npublic void testEncodeProblem() throws CharacterCodingException {\n    String in = "Red\\uD83C\\uDF39\\uD83C\\uDF39R\xc3\xb6ses";\n    ByteBuffer input = ByteBuffer.wrap(in.getBytes());\n\n    CharsetDecoder utf8Decoder = StandardCharsets.UTF_16BE.newDecoder();\n    utf8Decoder.onMalformedInput(CodingErrorAction.REPLACE);\n    utf8Decoder.onUnmappableCharacter(CodingErrorAction.REPLACE);\n    utf8Decoder.replaceWith(" ");\n\n    CharBuffer decoded = utf8Decoder.decode(input);\n\n    System.out.println(decoded.toString()); //  \xe5\x89\xa5\xe6\x93\xb0\xe9\xbe\x8c\xeb\xa7\xb0\xe9\xbe\x8c\xeb\xa5\x92\xec\x8e\xb6\xe7\x8d\xa5 \n}\n
Run Code Online (Sandbox Code Playgroud)\n

没有。

\n
    @Test\npublic void testEncodeProblem() {\n    String in = "Red\\uD83C\\uDF39\\uD83C\\uDF39R\xc3\xb6ses";\n    byte[] bytes = in.getBytes(StandardCharsets.UTF_16BE);\n    String res = new String(bytes);\n    System.out.println(res); //  Red\xef\xbf\xbd<\xef\xbf\xbd9\xef\xbf\xbd<\xef\xbf\xbd9R\xc3\xb6ses\n}\n
Run Code Online (Sandbox Code Playgroud)\n

没有。

\n

请注意,“\xc3\xb6”是有效的 UCS-2 符号。

\n

有什么想法/图书馆吗?

\n

java unicode encoding utf-8 utf-16

0
推荐指数
1
解决办法
1850
查看次数

C# 文件.ReadAllText 编码.Utf8

我尝试从 HTML 文件中读取字符串。\n这是我的代码:

\n
string result = File.ReadAllText(@"C:\\temp\\invoice.html", Encoding.UTF8);\n
Run Code Online (Sandbox Code Playgroud)\n

由于html文件的字符集是charset=windows124,所以结果值不是utf-8

\n

结果值包含;

\n
 \xef\xbf\xbd</span><br>BAH\xef\xbf\xbdEL\xef\xbf\xbdEVLER<span>\n
Run Code Online (Sandbox Code Playgroud)\n

.net c# encoding character

0
推荐指数
1
解决办法
1158
查看次数

两个unicode编码代表1个西里尔字母

我有这样的 unicode 和 utf-8 表示形式的字符串:

\n
\\u00d0\\u0095\\u00d1\\u0081\\u00d0\\u00bb\\u00d0\\u00b8\\u00d0\\u00bf\\u00d0\\u00be\\u00d0\\u00b2\\u00d0\\u00b5\\u00d0\\u00b7\\u00d0\\u00b5\\u00d1\\u0082 \\u00d1\\u0082\\u00d0\\u00be\\u00d1\\u0081\\u00d0\\u00b5\\u00d0\\u00b3\\u00d0\\u00be\\u00d0\\u00b4\\u00d0\\u00bd\\u00d1\\u008f\\u00d1\\u0083\\u00d0\\u00b6\\u00d0\\u00b5\\u00d1\\u0081\\u00d0\\u00ba\\u00d0\\u00b8\\u00d0\\u00bd\\u00d1\\u0083\n
Run Code Online (Sandbox Code Playgroud)\n

\n
\xc3\x90\xe2\x80\xa2\xc3\x91\xc3\x90\xc2\xbb\xc3\x90\xc2\xb8 \xc3\x90\xc2\xbf\xc3\x90\xc2\xbe\xc3\x90\xc2\xb2\xc3\x90\xc2\xb5\xc3\x90\xc2\xb7\xc3\x90\xc2\xb5\xc3\x91\xe2\x80\x9a \xc3\x91\xe2\x80\x9a\xc3\x90\xc2\xbe \xc3\x91\xc3\x90\xc2\xb5\xc3\x90\xc2\xb3\xc3\x90\xc2\xbe\xc3\x90\xc2\xb4\xc3\x90\xc2\xbd\xc3\x91 \xc3\x91\xc6\x92\xc3\x90\xc2\xb6\xc3\x90\xc2\xb5 \xc3\x91\xc3\x90\xc2\xba\xc3\x90\xc2\xb8\xc3\x90\xc2\xbd\xc3\x91\xc6\x92.\n
Run Code Online (Sandbox Code Playgroud)\n

所需的输出为 "\xd0\x95\xd1\x81\xd0\xbb\xd0\xb8 \xd0\xbf\xd0\xbe\xd0\xb2\xd0\xb5\xd0\xb7\xd0\xb5\xd1\x82 \ xd1\x82\xd0\xbe\xd1\x81\xd0\xb5\xd0\xb3\xd0\xbe\xd0\xb4\xd0\xbd\xd1\x8f\xd1\x83\xd0\xb6\xd0\xb5\xd1\ x81\xd0\xba\xd0\xb8\xd0\xbd\xd1\x83”。

\n

我已经尝试了所有可能的编码,但仍然无法获得完整的西里尔字母形式。

\n

我得到的最好的是

\n
'\xef\xbf\xbd?\xef\xbf\xbd?\xd0\xbb\xd0\xb8 \xd0\xbf\xd0\xbe\xd0\xb2\xd0\xb5\xd0\xb7\xd0\xb5\xef\xbf\xbd? \xef\xbf\xbd?\xd0\xbe \xef\xbf\xbd?\xd0\xb5\xd0\xb3\xd0\xbe\xd0\xb4\xd0\xbd\xef\xbf\xbd? \xef\xbf\xbd?\xd0\xb6\xd0\xb5 \xef\xbf\xbd?\xd0\xba\xd0\xb8\xd0\xbd\xef\xbf\xbd?'\n
Run Code Online (Sandbox Code Playgroud)\n

使用 Windows-1252。

\n

而且我还注意到所需字符串中的一个西里尔字母意味着两种 unicode 编码。

\n

例如:\\u00d0\\u0095 = '\xd0\x95'.\n也许有人知道什么编码以及如何使用它来获得正常结果?

\n

python java unicode encoding character-encoding

0
推荐指数
1
解决办法
515
查看次数