标签: encode

从十六进制字符串转换为unicode

如何将'dead'字符串转换为unicode字符串u'\xde\xad'

这样做:

from binascii import unhexlify
out = ''.join(x for x in [unhexlify('de'), unhexlify('ad')])
Run Code Online (Sandbox Code Playgroud)

创建一个<type 'str'>字符串'\xde\xad'

试图像这样使用Unicode.join():

from binascii import unhexlify
out = ''.join(x for x in [u'', unhexlify('de'), unhexlify('ad')])
Run Code Online (Sandbox Code Playgroud)

导致错误:

UnicodeDecodeError: 'ascii' codec can't decode byte 0xde in position 0: ordinal not in range(128)
Run Code Online (Sandbox Code Playgroud)

python unicode encode decode utf-8

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

调用REST Web服务时在Android中进行UTF8编码

我正在调用一个返回XML的rest WS.一些元素的字符串包括特殊字符,如áãç等...当我通过浏览器获取信息时,所有这些都显示正确,但是当从Android调用它时,我没有得到正确的特殊字符.

注意'解码'和'编码'变量:

当我使用时 URLDecoder.decode(result, "UTF-8") 结果保持不变

当我使用时 URLEncoder.encode(result, "UTF-8")结果更改为预期的结果(%的符号和数字表示符号和特殊字符).

这是调用webservice的方法:

public void updateDatabaseFromWebservice(){

    // get data from webservice
    Log.i(TAG, "Obtaining categories from webservice");

    HttpClient client = new DefaultHttpClient();
    HttpGet request = new HttpGet(ConnectionProperties.CATEGORIES_URI);

    ResponseHandler<String> handler = new BasicResponseHandler();

    String result = "";
    String decoded;
    String encoded;
    try {                   
        result = client.execute(request, handler);  

        decoded = URLDecoder.decode(result, "UTF-8");
        encoded = URLEncoder.encode(result, "UTF-8");
        String c = "AS";

    } catch (Exception e) {  
        Log.e(TAG, "An error occurred while obtaining categories", e);
    } …
Run Code Online (Sandbox Code Playgroud)

encoding android encode decode utf-8

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

Python将文件内容转换为unicode形式

例如,我有一个文件a.js,其内容是:

Hello, ??, bye.  
Run Code Online (Sandbox Code Playgroud)

其中包含两个汉字,其unicode形式是\u4f60\u597d
我想写一个python程序,它将a.js中的汉字转换为unicode形式,输出b.js,其内容应为:Hello, \u4f60\u597d, bye.

我的代码:

fp = open("a.js")
content = fp.read()
fp.close()

fp2 = open("b.js", "w")
result = content.decode("utf-8")
fp2.write(result)
fp2.close()  
Run Code Online (Sandbox Code Playgroud)

但似乎中文字符仍然是一个字符,而不是我想要的ASCII字符串.

python string unicode encode

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

如何使用PHP在字符串上使用rot13?

我有一个很大的PHP代码,我想手动编码和解码.
我的问题是php代码里面有很多单引号和双引号,因为它们我在使用str_rot13()下面的函数时有错误...
那么什么是正确的语法,我如何使用下面的函数进行编码:

str_rot13 ('That php Code');
Run Code Online (Sandbox Code Playgroud)

我该如何解码该编码文件?我找不到反向功能!

提前致谢

php encode decode rot13

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

为什么Python 3.2中的print()似乎默认为UTF-8?

我正在编写脚本来清理unicode文本文件(存储为UTF-8),我选择使用Python 3.x(3.2)而不是更受欢迎的2.x,因为3.x应该默认为UTF- 8.也许我做错了什么,但似乎打印声明至少仍然没有默认为UTF-8.如果我尝试打印一个包含特殊字符的字符串(下面的msg是一个字符串),我仍然会得到一个像这样的UnicodeEncodeError:

print(label, msg)
... in encode
    return codecs.charmap_encode(input,self.errors,encoding_map)[0] 
UnicodeEncodeError: 'charmap' codec can't encode character '\u0968' in position
38: character maps to <undefined>
Run Code Online (Sandbox Code Playgroud)

如果我首先使用encode()方法(它很好地默认为UTF-8),我可以避免错误:

print(label, msg.encode())
Run Code Online (Sandbox Code Playgroud)

这也适用于打印包含unicode字符串的对象或列表 - 这是我在调试时经常需要做的事情 - 因为str()似乎默认为UTF-8.但是我真的需要记住每次我想要打印(myobj)时使用print(str(myobj).encode())吗?如果是这样,我想我可以尝试用自己的函数包装它,但我对处理print()支持的所有参数排列没有信心.

此外,我的脚本从文件加载正则表达式并逐个应用它们.在应用encode()之前,我能够在控制台上打印一些相当清晰的东西:

msg = 'Applying regex {} of {}: {}'.format(i, len(regexes), regex._findstr)
print(msg)

Applying regex 5 of 15: ^\\ge[0-9]*\b([ ]+[0-9]+\.)?[ ]*
Run Code Online (Sandbox Code Playgroud)

但是,如果正则表达式包含文字unicode字符,则会崩溃,因此我首先将encode()应用于字符串.但是现在这些正则表达式很难在屏幕上阅读(我怀疑如果我尝试编写将这些正则表达式保存回磁盘的代码,我可能会遇到类似的问题):

msg = 'Applying regex {} of {}: {}'.format(i, len(regexes), regex._findstr)
print(msg.encode())

b'Applying regex 5 of 15: ^\\\\ge[0-9]*\\b([ ]+[0-9]+\\.)?[ ]*'
Run Code Online (Sandbox Code Playgroud)

我在Python中还不是很有经验,所以我可能会误解.任何解释或指向教程的链接(对于Python 3.x;我在网上看到的大部分内容都是2.x)将非常感激.

printing string unicode encode python-3.x

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

python字符串编码问题

python中是否有一个函数相当于用'u'为字符串添加前缀?

假设我有一个字符串:

a = 'C\xc3\xa9dric Roger'
Run Code Online (Sandbox Code Playgroud)

我想将其转换为:

b = u'C\xc3\xa9dric Roger'
Run Code Online (Sandbox Code Playgroud)

这样我就可以将它与其他unicode对象进行比较.我怎样才能做到这一点?我的第一直觉是尝试:

>>>> b = unicode(a)
Traceback (most recent call last):
File "<string>", line 1, in <fragment>
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 1: ordinal not in range(128)
Run Code Online (Sandbox Code Playgroud)

但这似乎是试图解码字符串.是否有一个函数可以在不进行任何解码的情况下转换为unicode?(这是'u'前缀的作用或我误解了吗?)

python string unicode encode

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

将BitMap转换为字符串而不换行?

在某处我找到了将BitMap转换为字符串的代码:

function Base64FromBitmap(Bitmap: TBitmap): string;
var
  Input: TBytesStream;
  Output: TStringStream;
begin
  Input := TBytesStream.Create;
  try
    Bitmap.SaveToStream(Input);
    Input.Position := 0;
    Output := TStringStream.Create('', TEncoding.ASCII);
    try
      Soap.EncdDecd.EncodeStream(Input, Output);
      Result := Output.DataString;
    finally
      Output.Free;
    end;
  finally
    Input.Free;
  end;
end;
Run Code Online (Sandbox Code Playgroud)

但是,这会给回一块包裹的线条.是否可以获得一条没有换行符的单行?

delphi encode bitmap delphi-xe7

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

PHP JSON编码方括号

我有一个简单的JSON数组,我正在尝试编码.在JSON字符串内部,我需要方括号中的另一个数组.我无法弄清楚如何使内部括号方块.有什么建议?

这是我的代码

$data = [ "item" =>  ["id" => "123456", "name" => "adam"]  ];                                                                    
$data_string = json_encode($data);
Run Code Online (Sandbox Code Playgroud)

这是输出

{"item":{"id":"123456","name":"adam"}}
Run Code Online (Sandbox Code Playgroud)

我希望得到什么

{"item":["1123","1134","1184"]}
Run Code Online (Sandbox Code Playgroud)

php json encode square-bracket

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

javax.crypto.IllegalBlockSizeException:输入长度不是16个字节的倍数

我有一个包含一些对象的ArrayList。对象是用于登录/传递的容器。
我尝试对它们进行解码,因为我必须将它们序列化为本地文件,以便在下一次启动后重新创建。
问题是我收到加密时

javax.crypto.IllegalBlockSizeException: Input length not multiple of 16 bytes
    at com.sun.crypto.provider.CipherCore.finalNoPadding(CipherCore.java:1039)
    at com.sun.crypto.provider.CipherCore.doFinal(CipherCore.java:983)
    at com.sun.crypto.provider.CipherCore.doFinal(CipherCore.java:845)
    at com.sun.crypto.provider.AESCipher.engineDoFinal(AESCipher.java:446)
Run Code Online (Sandbox Code Playgroud)

而且我完全不明白为什么。我认为Base64应该处理这个问题。但是,也许我不太了解它的含义。
我用来加密/解密

public class Move
{
    private static Move instance;

    String key = "pT5IkWNR90gJo5YM";
    String initVector = "RandomInitVector";
    Cipher cipher;


    private Move()
    {
//      try
//      {
//          cipher = Cipher.getInstance("AES/CBC/NoPadding");
//      }
//      catch (NoSuchAlgorithmException | NoSuchPaddingException e)
//      {
//          e.printStackTrace();
//      }
    }


    public void saveData(ArrayList<Account> dataToSave)
    {
        try
        {
            FileOutputStream fileOut = new FileOutputStream(Config.SERIAL_FILE);
            ObjectOutputStream out = …
Run Code Online (Sandbox Code Playgroud)

java encode decode exception aes

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

当getBytes("UTF-16")时,Java字符串"hello"有12个字节?

我预计,当一个java字符存储为"UTF-16"时,每个字符使用2个字节,因此"hello"应该消耗10个字节,但是这个代码:

String h = "hello";
System.out.println(new String(h.getBytes("UTF-16"), "UTF-16").length());
System.out.println(new String(h.getBytes("UTF-8"), "UTF-8").getBytes("UTF-16").length);
Run Code Online (Sandbox Code Playgroud)

将打印"5 12"

我的问题:

(1)正如我所提到的,我预计第一个println应该得到"10".但为什么5?

(2)对于第二个println,我试图首先将它作为"UTF-8"然后作为"UTF-16"获取它.我想它也应该是10.但实际上它是12.

我正在使用MAC而我的地区是香港.你能帮忙解释一下程序中发生了什么,以及"5 12"实际上是如何产生的?

非常感谢!

java string encode decode

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