我需要将一个中文句子分成单独的单词.中文的问题是没有空格.例如,句子可能看起来像:( ?????用空格表示:)?? ?? ?.
目前我可以想到一个解决方案.我有一个带有中文单词的字典(在数据库中).该脚本将:
尝试在数据库(??)中找到句子的前两个字符,
如果??实际上是一个单词并且它在数据库中,则脚本将尝试查找前三个字符(???).???不是一个字,所以它不在数据库中=>我的应用程序现在知道这??是一个单独的单词.
尝试与其他角色一起做.
我真的不喜欢这种方法,因为即使是一个小文本,它也会查询数据库太多次.
还有其他解决方案吗?
我真的很困惑这个unicode vs多字节的东西.
假设我正在用Unicode编译我的程序(但最终,我想要一个独立于所用字符集的解决方案).
1)所有'char'都会被解释为宽字符吗?
2)如果我有一个简单的printf语句,即printf("Hello World \n"); 如果没有字符串,我可以不使用_tprintf和_T("...")吗?如果printf语句包含一个字符串,那么我应该使用_tprintf和_T("..."),即_tprintf("Hello%s \n",name); ?
3)如果我有一个文本文件(以默认格式保存,即不更改使用的默认字符集)我想要读入缓冲区,我仍然可以使用char而不是TCHAR吗?特别是如果我逐个字符地读它,即通过递增字符指针?
谢谢.
此致,Rayne
我想在这个函数中有不同的英语单词和日语单词的过程
function process_word($word) {
if($word is english) {
/////////
}else if($word is japanese) {
////////
}
}
Run Code Online (Sandbox Code Playgroud)
谢谢
该explode()函数具有相关的多字节安全功能mb_split().
我没有看到相关的功能implode().这是否意味着内爆对于多字节字符串已经安全了?
实现以下逻辑的最快方法是什么:
def xor(data, key):
l = len(key)
buff = ""
for i in range(0, len(data)):
buff += chr(ord(data[i]) ^ ord(key[i % l]))
return buff
Run Code Online (Sandbox Code Playgroud)
在我的情况下,密钥是20字节的sha1摘要,数据是20字节和几(1,2,3)兆字节之间的一些二进制数据
更新:
好,朋友们.这是一个快3.5倍的实现,它将数据和密钥分成4个,2个或1个字节(在我的情况下,大多数情况下它是4字节长整数):
def xor(data, key):
index = len(data) % 4
size = (4, 1, 2, 1)[index]
type = ('L', 'B', 'H', 'B')[index]
key_len = len(key)/size
data_len = len(data)/size
key_fmt = "<" + str(key_len) + type;
data_fmt = "<" + str(data_len) + type;
key_list = struct.unpack(key_fmt, key)
data_list = struct.unpack(data_fmt, data)
result …Run Code Online (Sandbox Code Playgroud) 这是我的PHP代码:
<?php
$result = '';
$str = '???????? ???????';
for ($y=0; $y < strlen($str); $y++) {
$tmp = mb_substr($str, $y, 1);
$result = $result . $tmp;
}
echo 'result = ' . $result;
Run Code Online (Sandbox Code Playgroud)
输出是:
Тугайный Ñоловей
Run Code Online (Sandbox Code Playgroud)
我能做什么?我必须放入$resultMySQL数据库.
目前,我不明白为什么在处理UTF-8时在PHP中使用mbstring函数非常重要?我在linux下的语言环境已经设置为UTF-8,那么为什么函数不能strlen,preg_replace等等默认情况下无法正常工作?
如何在Visual C中获取多字节字符串的字节大小?有功能还是我必须自己计算角色?
或者,更一般地说,如何获得TCHAR字符串的正确字节大小?
解:
_tcslen(_T("TCHAR string")) * sizeof(TCHAR)
Run Code Online (Sandbox Code Playgroud)
编辑:
我只讨论以空字符结尾的字符串.
我想确保我正在运行的一些字符串替换是多字节安全的.我在网络周围发现了一些mb_str_replace函数,但它们很慢.通过它可能会通过500-900字节后,我说的话增加了20%.
有什么建议?我正在考虑使用preg_replace,因为它是本机的并且已经编译,所以它可能更快.任何想法将不胜感激.
我有这个代码:
$string = '???';
echo strlen($string);
Run Code Online (Sandbox Code Playgroud)
由于$string有3个波斯字符,输出必须是3但我得到6.
???有3个字符.为什么我的输出是6?
如何strlen()在php中使用具有实际输出的波斯语?