相关疑难解决方法(0)

含义 - <?xml version ="1.0"encoding ="utf-8"?>

我是XML的新手,我正在努力理解基础知识.我在"学习XML"中读到了以下这一行,但对我来说仍然不太清楚.有人能指出我的书或网站,清楚地解释这些基础知识吗?

学习XML:

XML声明描述了文档的一些最常见的属性,告诉XML处理器它需要一个XML解析器来解释这个文档.

这是什么意思?

我理解这个xml version部分 - doc的doc和user都应该在同一版本的XML中"讨论".但那encoding部分呢?为什么这有必要?

xml character-encoding xml-encoding xml-declaration

91
推荐指数
3
解决办法
37万
查看次数

Windows API:ANSI和宽字符串 - 是UTF8还是ASCII?UTF-16或UCS-2 LE?

我不太喜欢编码,但这是我认为我知道的(虽然它可能是错的):

  1. ASCII是一种7位固定长度编码,您可以在ASCII图表中找到这些字符.
  2. UTF8是一种8位可变长度编码.所有字符都可以用UTF8编写.
  3. UCS-2 LE/BE是固定长度的16位编码,支持大多数常见字符.
  4. UTF-16是一种16位可变长度编码.所有字符都可以用UTF16编写.

这些都是正确的吗?

现在,对于问题:

  1. Windows"A"函数(如SetWindowTextA)是否采用ASCII字符串?或"多字节字符串"(下面有更多问题)?
  2. Windows"W"函数是否采用UTF-16字符串或UCS-2字符串?我认为他们接受了UCS-2,但名字让我感到困惑.
  3. WideCharToMultiByte中,Microsoft使用"宽字符串"一词表示UTF-16.在那种情况下,那么什么被认为是"多字节字符串"?UTF-8?
  4. LPWSTR一个"宽字符串"?我会说它是,但那么,这不意味着它是UTF-16吗?并不意味着它可以用于显示4字节字符?如果没有,那么...显示4字节字符是不可能的?(Windows似乎没有那些API.)
  5. 是那个WideCharToMultiByte超集的功能,wcstombs它们是否都在相同类型的字符串上工作?或者说,其中一个工作在UTF-16上,而另一个工作在UCS-2上?
  6. 文件路径是UTF-16还是UCS-2?我知道Windows将其视为Microsoft文档中的"不透明字符数组",但根据C标准的功能fwprintf,是否有任何标准化编码?
  7. 什么是"ANSI"编码?这甚至是一个正确的术语吗?它与ASCII有什么关系?
  8. (我有更多的问题,但这已经足够了......无论如何我忘记了其中的一些......)

这些是很多问题,所以任何关于所有这些连接的解释的链接(除了阅读Unicode标准,无论如何都不会帮助Windows API)也将非常感激.

谢谢!

unicode winapi ascii multibyte-functions widechar

31
推荐指数
3
解决办法
9409
查看次数

java如何解码获取url参数收到抛出BeanParam

我收到了对此Web服务的GET响应

@GET
@Path("/nnnnnn")
public Response pfpfpfpf(@BeanParam NNNNNN n)
Run Code Online (Sandbox Code Playgroud)

该班NNNNN有:

@QueryParam("parameter")
private String parameter;
Run Code Online (Sandbox Code Playgroud)

为此,parameter有一个得到和设置.

我发送了一个带有查询参数的get请求,它正在自动绑定到我的选项NNNNN,一切都很棒.

但是,现在我在查询网址中发送日语字符串.我在发送之前用UTF-8对参数进行编码,我必须使用UTF-8解码它们.

但我的问题是我应该在哪里调用URLDecoder?我试图在该参数的getter中调用它,但它不起作用,我一直有类似的东西,C3%98%C2%B4%C3%98%C2 而不是日语字符

java jax-rs jersey decoding urldecode

13
推荐指数
1
解决办法
2054
查看次数

字符集和字符编码有什么区别

字符集和字符编码有什么区别?当我说我使用utf-8编码时,那将是我的字符集?默认情况下是否将unicode作为charset?

unicode character-encoding

10
推荐指数
1
解决办法
1397
查看次数

如何在SQLAlchemy的`create_engine`中使用`charset`和`encoding`(创建pandas数据帧)?

我对SQLAlchemy中的字符集和编码方式非常困惑.我理解(并已阅读)字符集和编码之间的区别,我对编码的历史有一个很好的了解.

我在latin1_swedish_ci中有一个MySQL表(为什么?可能因为这个).我需要创建一个pandas数据帧,在其中我得到正确的字符(而不是奇怪的符号).最初,这是在代码中:

connect_engine = create_engine('mysql://user:password@1.1.1.1/db')
sql_query = "select * from table1"
df = pandas.read_sql(sql_query, connect_engine)
Run Code Online (Sandbox Code Playgroud)

我们开始遇到Š角色的麻烦(对应于u'\u0160'unicode,但我们得到'\ x8a').我希望这可行:

connect_engine = create_engine('mysql://user:password@1.1.1.1/db', encoding='utf8') 
Run Code Online (Sandbox Code Playgroud)

但是,我继续得到'\x8a',我意识到,鉴于编码参数的默认值是有意义的utf8.那么,我试图encoding='latin1'解决这个问题:

connect_engine = create_engine('mysql://user:password@1.1.1.1/db', encoding='latin1')
Run Code Online (Sandbox Code Playgroud)

但是,我仍然得到相同的'\ x8a'.要明确,在这两种情况下(encoding='utf8'encoding='latin1'),我都可以做mystring.decode('latin1')但不能 mystring.decode('utf8').

然后,我重新发现charset了连接字符串中的参数,即'mysql://user:password@1.1.1.1/db?charset=latin1'.在尝试了所有可能的charset和编码组合后,我发现这个工作:

connect_engine = create_engine('mysql://user:password@1.1.1.1/db?charset=utf8')
Run Code Online (Sandbox Code Playgroud)

如果有人能解释我如何正确使用连接字符串中的参数,我将不胜感激charsetencodingcreate_engine

mysql connection-string sqlalchemy pandas

7
推荐指数
4
解决办法
1万
查看次数

将字符串从一个字符集转换为另一个字符集

我正在努力将字符串从一个字符集转换为另一个字符串,并在其上阅读许多示例,最后找到下面的代码,这对我来说很好,作为Charset Encoding的新手,我想知道,如果这是正确的方法它.

public static byte[] transcodeField(byte[] source, Charset from, Charset to) {
    return new String(source, from).getBytes(to);
} 
Run Code Online (Sandbox Code Playgroud)

要将String从ASCII转换为EBCDIC,我必须这样做:

System.out.println(new String(transcodeField(ebytes,
                Charset.forName("US-ASCII"), Charset.forName("Cp1047"))));
Run Code Online (Sandbox Code Playgroud)

要从EBCDIC转换为ASCII,我必须这样做:

System.out.println(new String(transcodeField(ebytes,
                Charset.forName("Cp1047"), Charset.forName("US-ASCII"))));
Run Code Online (Sandbox Code Playgroud)

java ascii character-encoding ebcdic

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