Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Utf 8 memcached client抛出java.lang.IllegalArgumentException:键包含无效字符_Utf 8_Memcached - Fatal编程技术网

Utf 8 memcached client抛出java.lang.IllegalArgumentException:键包含无效字符

Utf 8 memcached client抛出java.lang.IllegalArgumentException:键包含无效字符,utf-8,memcached,Utf 8,Memcached,memcache客户端似乎不支持UTF-8字符串作为其密钥。但我必须使用i18n。不管怎么说,要修好它吗 java.lang.IllegalArgumentException:项包含无效字符:`HK:00:A Kung Wan'' 位于net.spy.memcached.MemcachedClient.validateKey(MemcachedClient.java:232) 位于net.spy.memcached.MemcachedClient.addOp(MemcachedClient.ja

memcache客户端似乎不支持UTF-8字符串作为其密钥。但我必须使用i18n。不管怎么说,要修好它吗

java.lang.IllegalArgumentException:项包含无效字符:`HK:00:A Kung Wan'' 位于net.spy.memcached.MemcachedClient.validateKey(MemcachedClient.java:232) 位于net.spy.memcached.MemcachedClient.addOp(MemcachedClient.java:254)


这里的问题不是UTF编码。实际上,您的密钥包含一个空格。键不能有空格、新行、回车或空字符

下面是生成异常的代码行

if(b=''| | b='\n'| | b='\r'| | b==0){
抛出新的IllegalArgumentException
(“键包含无效字符:``+Key+“””);
}
Base64在将密钥传递给memcached客户端的set()和get()方法之前对密钥进行编码。 处理具有特殊字符、控制字符、新行、空格、unicode字符等的所有memcached键的一般解决方案是在将键传递给memcached的set()和get()方法之前对其进行base64编码

// pseudo code for set
memcachedClient.set(Base64.encode(key), value);

// pseudo code for get
memcachedClient.get(Base64.decode(key), value);
这将它们转换为memcached保证能够理解的字符。 此外,base64编码没有性能损失(除非你是nano性能优化专家),base64是可靠的,只需要大约30%的额外长度

工作起来很有魅力

只需添加清除:密钥不能包含控制字符或空白。