泰文的字符拆分

泰文字符存在特殊性,如'ผ  ผู   ผู้',它们通过添加鞋子和帽子形成不同含义。UTF8编码中,一个字符可能由9个字节构成,导致字符拆分混乱。解决方法是在代码中按UTF8头3字节判断,合并连续字符。泰文这种编码设计可能是为了减少编码数量,适应其固定组合和书写习惯。

泰文比较奇葩,比如下面3个字符:

ผ  ผู   ผู้

第一个是一个字,第二个是第一个穿鞋子,第三个是第一个穿鞋带帽。没错,他们的文字是有鞋子和帽子的。但是穿鞋带帽之后,感觉上应该就成了一个单词,显示确是一个字符。

第一个是3字节,第二个是6字节,第三个是9字节。




前情交代完毕:

我们按照UTF8来拆分字符的时候,显示会错乱,经过我手动测试发现,一个字符居然有9个字节,才能正常显示。WTF!!UTF8最长不是只有6个字节么!!

然后就发现了上面这个鞋子帽子的事情。为毛不把这3个字单独编码!!!

测试证明,虽然是UTF8,但是如果一个字符后面后鞋子或者帽子,他就会把后面的鞋子和帽子组合到一起,来显示一个字符,所以就会造成一个字符超过6个字节的情况。


吐槽完毕,接着说怎么处理这个事情:

        // 以下为处理泰文组合字符情况
        int c=*text;
        if(c==0xE0)
        {
            int c1=*(text+1);
            int c2=*(text+2);
            if((c1==0xb8 && (c2==0xb1 || (c2>=0xb3 && c2<=0xba)))
               ||(c1==0xb9 && c2>=0x87 && c2<=0x8e))
            {
                    CCString* cc=(CCString*)result->lastObject();
                    cc->m_sString.append(curString);
                    。。。 。。。
                    continue;      
            }
            
        }

这是直接在项目代码里面截取的,我不想改了,只需要注意上面C,C1,C2几个char,这是一个UTF8字符的头3字节,如果满足if条件,就把当前字符接到上一个字符的后面去。


注意:上述是基于我的猜测,但是确实能解决问题。泰文编码的资料太少,google又暂时不能上。有可能这不是UTF8编码只是兼容UTF8编码或者什么的,如果有知道真相的请告知。


然后我就从蛋疼的设计这个东西的思路上去想了下为什么要这样设计,这样多怪异啊。为毛不把这3个字符单独编码呢,这不就是王、玉、宝么,然后我想了一晚上,想到如下几个原因:

1、减少编码数量。泰文种这样的组合太多全部单独编码数量太大。

2、还是减少编码数量,但是和上面那个不一样。他们的鞋子和帽子,相对固定,不像我们的王玉宝,王加一点,有可能是玉,也有可能是主,他们就只有这么一种加法。

3、泰国人思维过于奇葩。虽然这是最不可能的。

4、书写习惯。之前说了,一个字加了鞋子帽子之后,相当于一个单词,就像我们写一个test一样,是依次写4个字母,他们就是先写个本体,再写个鞋子,再写个帽子,然后这个鞋子和帽子可以独立成字。不然就是输入的时候,先输入一个字,再输入一个帽子,然后这个帽子就和前面那个字合体了。不过这样说起来好像仍然还是可以独立编码的。这个只能说是泰国人民缺少一个科学的输入法。好冷。。。


以上纯属玩笑,收工。


<think>好的,我现在需要帮用户翻译“是否删除”为泰语。首先,我得确认用户的具体需求,可能他们在使用某个软件或应用时需要将确认删除的提示翻译成泰语,或者是在处理文档中的相关文本。 接下来,我应该先确定“是否删除”在泰语中的正确翻译。我记得泰语的疑问句结构通常会把疑问词放在句尾,比如“หรือไม่”或者“หรือเปล่า”。而“删除”对应的动词是“ลบ”,所以直译的话可能是“จะลบหรือไม่”。不过,这里需要考虑语境是否为正式还是非正式,用户可能需要的是简洁明了的翻译,适合用于界面提示或系统消息。 然后,我需要确认语法是否正确。在泰语中,疑问句的结构通常是动词+疑问词,所以“是否删除”可以翻译成“จะลบหรือไม่”,其中“จะ”表示将来时态,相当于“将要”,“ลบ”是删除,“หรือไม่”是疑问词,相当于“是否”。这样的结构在泰语中是正确且常用的,尤其是在正式或书面语境中。 另外,可能要考虑是否有更常用的表达方式。比如,有时候在泰语中可能会用“ต้องการลบหรือไม่”来表示“是否要删除”,其中“ต้องการ”是“需要”的意思,这样可能更明确。不过,用户要求的是直译“是否删除”,所以“จะลบหรือไม่”更贴切。 同时,我要注意泰语的书写是否正确,比如字符和拼写是否有误。确保“ลบ”拼写正确,没有额外的符号或错误字母。另外,泰语中的空格使用也需要正确,通常在疑问词前后不需要空格,所以“หรือไม่”是正确的写法。 可能用户还需要知道不同的翻译变体,例如更口语化的表达,或者更正式的说法。但根据用户的问题,直接翻译“是否删除”应该是最合适的。另外,如果有上下文的话,可能需要调整翻译,比如如果是在确认对话框中,可能需要更礼貌或更明确的表达,但如果没有更多信息,保持直译是安全的。 总结一下,正确的翻译应该是“จะลบหรือไม่”。我需要再次确认这个翻译是否在泰语环境中通用,可能需要参考一些泰语资料或翻译工具验证。通过检查,发现“จะลบหรือไม่”确实是常见的翻译,因此可以确定答案正确。</think>要将“是否删除”翻译成泰语,可以按照以下步骤进行: 1. **拆分短语结构**: - **是否** → 泰语疑问结构通常使用"หรือไม่"(rǔe mâi) - **删除** → 对应泰语动词"ลบ"(lóp) 2. **组合翻译**: 直译为"จะลบหรือไม่"(jà lóp rǔe mâi),其中: - "จะ"(jà)表示将来时态 - "ลบ"(lóp)是「删除」的动词 - "หรือไม่"(rǔe mâi)对应「是否」的疑问结构 3. **语境优化**: 如果是软件/系统提示语,更地道的表达为: ```th ต้องการลบหรือไม่? (tông-gaan lóp rǔe mâi) ``` 直译为「需要删除吗?」(更符合泰语确认对话框的习惯用法) 4. **特殊场景**: - 在移动设备等简洁界面中,可能简化为"ลบหรือไม่?"(lóp rǔe mâi) - 正式书面语境需保留完整结构"ท่านต้องการลบหรือไม่"(thân tông-gaan lóp rǔe mâi) **最终推荐翻译**: $$ \text{ต้องการลบหรือไม่} $$ (注:泰语无需使用问号,空格仅在特定语法位置出现)
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值