标签: unicode-string

Python urllib.request和utf8解码问题

我正在编写一个简单的Python CGI脚本来抓取网页并在Web浏览器中显示HTML文件(就像代理一样).这是脚本:

#!/usr/bin/env python3.0

import urllib.request

site = "http://reddit.com/"
site = urllib.request.urlopen(site)
site = site.read()
site = site.decode('utf8')

print("Content-type: text/html\n\n")
print(site)
Run Code Online (Sandbox Code Playgroud)

从命令行运行时,此脚本可以正常工作,但是当它通过Web浏览器查看时,它会显示一个空白页面.这是我在Apache的error_log中得到的错误:

Traceback (most recent call last):
  File "/home/public/projects/proxy/script.cgi", line 11, in <module>
    print(site)
  File "/usr/local/lib/python3.0/io.py", line 1491, in write
    b = encoder.encode(s)
  File "/usr/local/lib/python3.0/encodings/ascii.py", line 22, in encode
    return codecs.ascii_encode(input, self.errors)[0]
UnicodeEncodeError: 'ascii' codec can't encode character '\u2019' in position 33777: ordinal not in range(128)
Run Code Online (Sandbox Code Playgroud)

python unicode cgi apache2 unicode-string

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

将unicode文字字符串打印为Unicode字符

我需要打印一个unicode文字字符串作为等效的unicode字符.

System.out.println("\u00A5"); // prints  ¥

System.out.println("\\u"+"00A5"); //prints \u0045  I need to print it as ¥ 
Run Code Online (Sandbox Code Playgroud)

如何评估此字符串是unicode字符?

java unicode-string unicode-escapes unicode-literals

2
推荐指数
1
解决办法
5825
查看次数

在字符串中搜索 UTF-8 代码点时有什么注意事项吗?

如果我有一些字符串要在 UTF-8 中搜索,另一个要搜索,也在 UTF-8 中搜索,对代码点进行直接比较搜索以查明匹配字符有什么注意事项吗?

以 UTF-8 的工作方式,是否有可能得到误报?

我已经阅读了很多关于 UTF-8 有多棒的文档,但是我无法形成证据来回答这个问题。

如果我向前搜索,那么我可以跳过代码点的长度;但它是反向走绳子,这让我很担心。

不是向后走直到我到达代码点的开头然后从该地址进行内存比较,而是简单地沿着每个字节向后走直到我得到与搜索字符串的完全匹配是否安全?

c++ unicode encoding utf-8 unicode-string

2
推荐指数
1
解决办法
202
查看次数

如何在 php 中将奇怪的强/粗体 Unicode 转换为非粗体 UTF-8 字符?

我正在尝试使用 twitter api 在我的数据库中存储一条推文,但我得到了这种似乎是“自然”粗体字符的奇怪字符

正常字符:

azertyuio
Run Code Online (Sandbox Code Playgroud)

奇怪的字符:

     !!
Run Code Online (Sandbox Code Playgroud)

如果我将强字符粘贴到我的 netbeans 编辑器中,我会得到类似方形字符的东西...

我以前从未见过。你能帮我在 php 中用非粗体字符转换这个文本吗?

php character-encoding unicode-string

2
推荐指数
2
解决办法
3683
查看次数

如何在javascript中检测字符串是否包含阿姆哈拉语?

我需要检查一个字符串是否包含阿姆哈拉语,它也可以包含英语字符:

\n\n
const amharic = "\xe1\x8b\xa8\xe1\x88\x99\xe1\x8a\xa8\xe1\x88\xab test \xe1\x88\x95\xe1\x89\xa5\xe1\x88\xa8\xe1\x89\x81\xe1\x88\x9d\xe1\x8d\x8a";\namharc.match(pattern)\n
Run Code Online (Sandbox Code Playgroud)\n

javascript regex unicode unicode-string

2
推荐指数
1
解决办法
680
查看次数

将以null结尾的内存流转换为unicode字符串

在Delphi XE中,我从剪贴板中捕获CF_UNICODETEXT数据.结果是一个以两个空字节终止的流.要获取复制到剪贴板的实际字符串,我需要删除空值.

这个类似的问题包含一个从TMemoryStream转换为Delphi的unicode字符串的好方法:

function MemoryStreamToString(M: TMemoryStream): string;
begin
  SetString(Result, M.Memory, M.Size div SizeOf(Char));
end;
Run Code Online (Sandbox Code Playgroud)

但是,在我的情况下,这将产生一个包含尾随空值的字符串.我可以通过限制大小来解决这个问题:

function ClipboardMemoryStreamToString(M: TMemoryStream): string;
begin
  SetString(Result, M.Memory, (M.Size - SizeOf(Char)) div SizeOf(Char));
end;
Run Code Online (Sandbox Code Playgroud)

......但这感觉很难看,"特殊情况".我想知道是否有更简洁的方法对此进行编码,以便后来查看代码的任何人(我!)都不会立即询问"为什么会从流中删除尾随的字符?"

编辑:预先解决问题的一种方法是添加评论.但是,除此之外?

delphi memorystream unicode-string null-terminated

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

在Java/Scala中将Unicode(CJK ExtB)字符转换为十进制NCR

我正在尝试将包含CJK ExtB计划中的Unicode字符的Java字符串转换为十进制NCR.

例如(你可以试试http://people.w3.org/rishida/tools/conversion/):

  • "游钖堃"应转换为 &#28216;&#37722;&#22531;
  • "怀"应转换为 &#162215;&#25079;

这是我尝试过的(在Scala中):

def charToHex(char: Char) = "&#%d;" format(char.toInt)
def stringToHex (string: String) = string.flatMap(charToHex)

println (stringToHex("???")) // &#28216;&#37722;&#22531;
println (stringToHex("?"))   // &#55390;&#56743;&#25079;
println ("?".toCharArray().length) // Why it is 3?
Run Code Online (Sandbox Code Playgroud)

如您所见,它在第一种情况下正确转换,三个unicode字符转换为三个NCR.

但在第二种情况下"怀",只有两个unicode字符,但Java/Scala似乎认为它是一个包含三个字符的字符串.

那么,这里发生了什么,我怎么能正确地转换第二个案例就像我提到的网站上的转换器一样?非常感谢.

更新:

  • 我的源代码文件使用的是UTF-8.
  • 这是"怀".toCharArray()的结果
    • char[] = ?, char.toInt = 55390
    • char[] = ?, char.toInt = 56743
    • char[] = ?, char.toInt = 25079

现在我想我知道发生了什么.字符""在UTF-16中编码为0xD85E 0xDDA7,它是4个字节而不是2个字节.因此在转换为char数组时需要2个元素,其中数据类型char只能表示2个字节.

java unicode scala character-encoding unicode-string

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

从python中的unicode字符串中删除换行符的问题

我有一段Unicode文本.我想在打印输出之前从文本中删除所有换行符.我的代码看起来像这样:

input_string = u'\u3010JK\u3011\u9032\u5b66\u306b\u56f0\u3063\u305f\uff2a\uff2b\u304c\u5148\u751f\u306b\u52a9\u3051\u3066\u3082\u3089\u3046\u305f\u3081\u306b\uff33\uff25\uff38\uff01.mov'
output_string = ' '.join(input_string.splitlines())
print output_string
Run Code Online (Sandbox Code Playgroud)

我希望库方法能够处理所有脏的换行符unicode字符情况.但是,看起来这个方法不会从给定的输入中删除换行符.请建议一个解决方案,从给定的输入中删除换行符.

python unicode newline unicode-string

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

C#中的Unicode字符串

我记得在C++中使用Unicode字符串,例如:

std::wstring str = _T("a string here");
Run Code Online (Sandbox Code Playgroud)

C#中的等价物是什么?

c# unicode-string

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

unicode和python问题(访问unicde代码图表)

昨天我写了以下内容function转换integerPersian

def integerToPersian(number):
    listedPersian = ['?','?','?','?','?','?','?','?','?','?']
    listedEnglish = ['0','1','2','3','4','5','6','7','8','9']    
    returnList = list()

    listedTmpString = list(str(number))

    for i in listedTmpString:
        returnList.append(listedPersian[listedEnglish.index(i)])

    return ''.join(returnList)
Run Code Online (Sandbox Code Playgroud)

当你调用它,如:integerToPersian(3455),它return ????????就相当于3455PersianArabic language。当你看一个数字,如阅读databae,并希望显示widget,这 function是非常有用的。

我从http://unicode.org下载codes charts 了,因为我需要写,因为它应该作为参数存储,所以我是pytho中的新手。unicodePersianToInteger('unicodeString')utf-8utf-82 bytes

我的问题是,如何存储2bytes?,如何utf8存储,如何将一个拆分unicode string为另一种格式?怎么用unicode code charts

注意:我发现使用int() built-in fuinction,但是我无法使用。也许可以

python unicode utf-8 unicode-string python-unicode

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