标签: multibyte

如何获取多字节字符串的字节大小

如何在Visual C中获取多字节字符串的字节大小?有功能还是我必须自己计算角色?

或者,更一般地说,如何获得TCHAR字符串的正确字节大小?

解:

_tcslen(_T("TCHAR string")) * sizeof(TCHAR)
Run Code Online (Sandbox Code Playgroud)

编辑:
我只讨论以空字符结尾的字符串.

c string size character-encoding multibyte

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

我怎样才能在php中使用strlen for Persian?

我有这个代码:

$string = '???';
echo strlen($string);
Run Code Online (Sandbox Code Playgroud)

由于$string3个波斯字符,输出必须是3但我得到6.

???有3个字符.为什么我的输出是6

如何strlen()在php中使用具有实际输出的波斯语?

php persian strlen multibyte

8
推荐指数
3
解决办法
1059
查看次数

将多字节字符串截断为n个字符

我试图在字符串过滤器中使用此方法:

public function truncate($string, $chars = 50, $terminator = ' …');
Run Code Online (Sandbox Code Playgroud)

我期待这个

$in  = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWYXZ1234567890";
$out = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUV …";
Run Code Online (Sandbox Code Playgroud)

还有这个

$in  = "âãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ??????????????????????????????";
$out = "âãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ?????????????????? …";
Run Code Online (Sandbox Code Playgroud)

这是$chars减去$terminator字符串的字符.

此外,滤波器应该在$chars极限以下的第一个字边界切割,例如

$in  = "Answer to the Ultimate Question of Life, the Universe, and Everything.";
$out = "Answer to the Ultimate Question of Life, the …";
Run Code Online (Sandbox Code Playgroud)

我很确定这应该适用于这些步骤

  • 从最大字符中减去终结符中的字符数量
  • 验证该字符串是否长于计算的限制或返回它不变
  • 在字符串下面找到最后一个空格字符,以获得字边界
  • 如果没有找到最后一个空格,则在最后一个空格处剪切字符串
  • 将终结符附加到字符串
  • 返回字符串

但是,我现在尝试了各种组合str*mb_*功能,但都产生了错误的结果.这不是那么困难,所以我显然缺少一些东西.有人会为此分享一个有效的实现,或者指向一个资源,我终于可以理解如何做到这一点.

谢谢

PS是的,我之前已经检查过https://stackoverflow.com/search?q=truncate+string+php :)

php string truncate multibyte

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

合并两个正则表达式来截断字符串中的单词

我试图提出以下函数将字符串截断为整个单词(如果可能,否则它应截断为字符):

function Text_Truncate($string, $limit, $more = '...')
{
    $string = trim(html_entity_decode($string, ENT_QUOTES, 'UTF-8'));

    if (strlen(utf8_decode($string)) > $limit)
    {
        $string = preg_replace('~^(.{1,' . intval($limit) . '})(?:\s.*|$)~su', '$1', $string);

        if (strlen(utf8_decode($string)) > $limit)
        {
            $string = preg_replace('~^(.{' . intval($limit) . '}).*~su', '$1', $string);
        }

        $string .= $more;
    }

    return trim(htmlentities($string, ENT_QUOTES, 'UTF-8', true));
}
Run Code Online (Sandbox Code Playgroud)

以下是一些测试:

// Iñtërnâtiônàlizætiøn and then the quick brown fox... (49 + 3 chars)
echo dyd_Text_Truncate('Iñtërnâtiônàlizætiøn and then the quick brown fox jumped overly the lazy dog and one …
Run Code Online (Sandbox Code Playgroud)

php regex string truncate multibyte

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

合并java/android中的两个字节

我有一个22字节的帧.帧是来自加速度计的输入流,通过蓝牙.加速度计读数是一个16位数,分为两个字节.

当我尝试将字节与缓冲区[1] +缓冲区[2]合并,而不是添加字节时,它只是将结果并排放置.所以1 + 2 = 12.

有人能告诉我如何组合这两个字节来获得原始数字.(顺便说一句,字节是以小端发送的)

谢谢

android byte multibyte

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

从CLOB到VARCHAR2中选择尽可能多的数据,在数据中使用多字节字符

多字节字符给我带来了很多痛苦.

对此问题的任何建议?

我有一个可能包含一些多字节字符的CLOB字段,我需要在SQL中选择并将此字段转换为下游进程的字符串,目前我正在使用:

SELECT DBMS_LOB.SUBSTR( description, 4000, 1 ) FROM table
Run Code Online (Sandbox Code Playgroud)

但上面的4000命令是字符长度,而不是字节.所以我不得不改为3000来处理任何可能已经悄悄进入数据的多字节字符,否则将发生缓冲区大小错误.

问题是对于不包含多字节字符的记录,可能会不必要地截断超出需要的数据.(4000是字符串限制,我们可以/不得不忍受.)

有没有办法做相当于以下的事情:

SELECT DBMS_LOB.SUBSTR( description, 4000bytes, 1 ) FROM table
Run Code Online (Sandbox Code Playgroud)

这样我就可以获得尽可能多的数据.

注意:我不允许创建临时表/视图,不使用PL/SQL,只允许SQL SELECT ...

sql oracle clob substr multibyte

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

从字符串PHP中删除多字节空格

我试图使用preg_replace ?从字符串输入中消除日语全宽白色空格" "但我最终得到一个损坏的多字节字符串.

我更喜欢preg_replace而不是str_replace.这是一个示例代码:

$keywords = '?????';
$keywords = str_replace(array(' ', '?'), ' ', urldecode($keywords)); // outputs :'????'

$keywords = preg_replace("@[ ?]@", ' ',urldecode($keywords)); // outputs :'?? ????'

任何人都知道为什么会这样,以及如何纠正这种情况?

php regex utf-8 preg-replace multibyte

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

将包含日文字符的csv文件读入R中

我正在努力让R读取一个csv文件,其中一些列标准英文字符,一些数字和一些日文字符字段.这是数据的样子:

category,desc,otherdesc,volume
UPC - 31401 Age Itameabura,???????????,OIL_OTHERS_SML_ECO,83.0
UPC - 31401 Age Itameabura,???????,OIL_OTHERS_MED,137.0
UPC - 31401 Age Itameabura,????????,OIL_CANOLA_OTHERS_LRG,3026.0 
Run Code Online (Sandbox Code Playgroud)

将R的语言设置为英语,将日语字符转换为一些乱码.当我将R中的语言设置更改为日语时Sys.setlocale("LC_CTYPE", "japanese"),我看到文件根本没有被读入.R给出错误说:

make.names出错(col.names,unique = TRUE):'サ类'中的多字节字符串无效

我不知道我的csv文件或标题名称有什么问题.您能否指导我如何将此csv文件读入R中,以便所有内容都像在csv文件中一样显示?

谢谢!Vish

csv locale r multibyte

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

致命错误:即使启用了mbstring,也要调用未定义的函数mb_strtolower()

嘿伙计们怎么样?我刚刚完成了我的服务器的Os重载,我已经恢复了所有的东西,所有数据都是正确的,但我得到了这个:

致命错误:调用未定义的函数mb_strtolower()

我已经做了一些搜索,我发现它的mbstring exsttention for php没有安装,这似乎不是我的情况,因为我检查并安装并启用所有phpversion

任何人有任何想法?

php joomla multibyte

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

如何在C中创建多字节字符

在我研究C和C++中的字符编码时,我遇到了两种常见的编码方式:多字节字符和宽字符.为了加强我对这些系统的理解(利弊),我想做一些例子.由于wchar_t类型的本机支持,使用宽字符执行示例不是问题.但是当我想创建一个包含那些所谓的多字节字符的字符串时,我遇到了一个问题.

我怎样才能实际创建一个多字节字符串,该字符串使用与char数组一起使用的编码(使用Visual C++)?确实存在这种编码:http://www.gnu.org/software/libc/manual/html_node/Shift-State.html.但我只阅读它,从未见过一个真实的例子.或者你必须为这种字符串创建自己的编码?

c c++ encoding character multibyte

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