添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
如果你是SOAP程序员,使用工具包可以自动生成XML流,声明此字符串符合UTF-8编码规则。如果你是XML程序员,你必 须更改XML头,将UTF-8指定为编码标准。然而,不管你是手工构造XML还是使用了SOAP工具包,编码内容不一定符合UTF-8规范。 用户提供的字符串(比如:商品描述、人物姓名)并不都符合UTF-8规范,你是将它们转化后再存入数据库吗?这些数据在数据库中被检索、或是被发送到 eBay时,是否需要先被转化为符合UTF-8规范的数据呢? 想想German O-umlaut,它的数字表示形式取决于字符集的选择。在ISO-8859-1字符集和CP-1252 字符集中它占了一个字节。但在UTF-8字符集中,它的长度变为了两个字节。对于采用不同字符集的两个文档,你不能只是简单进行“复制/粘贴”的操作。 我们需要确切的了解数据的输入格式,或是信息存入文件乃至数据库时使用的格式,这样才能准确的将数据转化为UTF-8格式。我 们需要了解的是:你从何处获取这些字符串?这些字符串创建(发送/存储)时采用了哪种字符集?这些字符串是由什么创建的,编译器还是浏览器? 你的文件系统或是数据库可以正常的接收、存储以及显示UTF-8编码的字符串吗?你可以很好的控制那些发送到你应用程序的字符串的编码格式吗? 网页浏览器是一个关键的数据来源。如果你提供了一个网页来收集信息,并且希望用户的浏览器可以在应用程序处理数据之前将数据编码为UTF-8格式,***的方法是同时在HTTP头和HTML标签中设置UTF-8字符集。     Content-Type: text/html; charset=UTF-8     (当然,如果客户端又改写了浏览器的设置,事情很有可能变得更复杂) Java提供了新的String(byte[], String charset)方法,用以将某种特定的字符集转换为UTF-16,然后使用str.getBytes("utf8") 方法就可以将 UTF-16转换为 UTF-8。Perl有utf8标注,例如可以使用 "use utf8" 进行读写。 怎样确定ISO-to-UTF-8的转换是否正常进行? 一个简单的抽查方法是在文件里写一些带.html后缀的非ASCII编码字符,使用编码设置为UTF-8的浏览器查看字符是否显示正常。 更程序化的方法是将ISO-8859-1格式转换为UTF-8格式再变回ISO-8859-1,然后通过使用二进制差异来保证 原始ISO数据和终ISO数据吻合。 使用Java的时候,你也可以用类似方法测试UTF-8数据: 将数据读入为UTF-16 (new String(byte[], "UTF-8")) ,然后输出为UTF-8 (str.getBytes("UTF-8")),,对前后两次得到的UTF-8 数据进行二进制差异来确保它们相吻合。 一个忠告:如果原始数据以 CP-1252字符集(ISO-8859-1的一个超集)编码,上述的转换过程会丢失那些CP-1252字符集中***(但ISO-8859-1中没有)的 字符。可能会有无效的字符如“?”或空格出现。eBay的建议是:不要做CP-1252到UTF-8间的数据转换,除非你可以确保你的工具提供对CP- 1252的支持,或是确保只有ISO范围内的字符出现。不然的话,如果你仅仅进行ISO-8859-01到UTF-8 的转换并且你的数据包含欧元符号之类的CP-1252字符,此字符将无法正常转换为UTF-8编码。 工具和编程语言 请注意,对于ISO-8859-1或是CP-1252 究竟使用怎样的拼写取决于你使用的工具或是编程语言。举个例子,也许你不得不指定 “Windows-1252”,或是用空格来代替 “ISO 8859-1”中的连字符。 数据库 :你的数据库兼容UTF-8吗?试试存储和检索一个两字节的字符。 Oracle 8.1.7 :使用DBI 1.45 和 DBD 1.15。其他版本会报错:“"DBI ERROR: ORA-06553: PLS-561: character set mismatch on value for parameter”。 Perl ::可使用Perl 5.8.1至Perl 5.8.4的版本编写UTF-8文本数据,用5,8.1以前的版本或是5.8.5版本编写UTF-8都会有bug。如果你的请求是以WINDOWS- 1252或者别的ISO生成的,你也可以安装CPAN中的Text::Iconv组件。在发出请求命令之前调用convert() function,将字符串从WINDOWS-1252转换为UTF-8编码。

答案对您有帮助吗?

是,对我很有帮助