我使用PHP ZipArchive类来提取.zip文件,它适用于英语,但导致我的本地语言(THAI)出现问题.
我icov('utf-8','windows-874',$zip->getNameIndex($i))用来将utf-8转换为THAI.它适用于文件夹/文件的名称,但不适用于解压缩的.zip文件并导致此错误:
iconv():检测到输入字符串中的非法字符
谁能告诉我这里的问题是什么?
我的PHP代码
$file = iconv('utf-8', 'windows-874', $_GET['File']);
$path = iconv('utf-8', 'windows-874', $_GET['Path']);
$zip = new ZipArchive;
if ($zip->open($file) === TRUE) {
// convert to Thai language
for($i = 0; $i < $zip->numFiles; $i++) {
$name = $zip->getNameIndex($i);
//echo iconv("charset zip file", "windows-874", $name);
//$zip->extractTo($path,$name); -> this problem
}
$zip->close();
echo json_encode('unZip!!!');
} else {
echo json_encode('Failed');
}
Run Code Online (Sandbox Code Playgroud)
解压缩压缩文件后,文件的名称不是我为其设置的名称.

这是我试图设置的名称:

这是我的压缩文件:
https://www.dropbox.com/s/9f4j04lkvsyuy63/test.zip?dl=0
更新
我尝试在Windows XP中解压缩文件,它在那里工作正常,但在Windows 7中没有.
有人可以推荐韩国,印度尼西亚,泰国和越南的开源POS标签吗?
我可以用来标记我目前拥有的语料库数据.(例如stanford-postagger)
如果你是开发者并且愿意分享并让我测试POS标签,我也不介意.
通过输出的一些修改,我用POS用jvntextpro标记越南数据
但我仍然希望在韩国,印度尼西亚和泰国的POS标签上有更多的意见.
客户端下载从我们的服务器文件后与我们的应用程序,该应用程序做了ParseExact关于其从形式的服务器归结日期字符串:yyyy/mm/dd HH:mm:ss.
在经历了很多混乱之后,我在一些日志中注意到客户端系统上的日期是19/7/2554.事实证明,这是一个有效的时间,如在泰国,Windows默认为佛教时代的时间系统,在那里是2554年.
我的解析确切是用一种不变的文化完成的,我怀疑这可能是问题,但我认为文化指的是你试图解析的格式?
我得到的异常消息是:字符串未被识别为有效,DateTime因为星期几不正确
不是通过单词边界,这是可以解决的.
例:
#!/usr/bin/env python3
text = '?????????????'
for char in text:
print(char)
Run Code Online (Sandbox Code Playgroud)
这将产生:
เ
ม
อ
แ
ร
ก
เ
ร
ม
这显然不是理想的输出.有任何想法吗?
可移植的文本表示形式是:
text = u'\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e41\u0e23\u0e01\u0e40\u0e23\u0e34\u0e48\u0e21'
Run Code Online (Sandbox Code Playgroud) 我正在开发我们目前正在翻译成泰语的应用程序。当我们在 iOS 7 上测试该应用程序时,一切都进行得很顺利,但在 iOS 8 上,一些重音被UILabels剪掉了。
我们使用自动布局来布局应用程序的所有元素。
我在 iOS 8 的发行说明中读到过,泰语字符默认字体已增加以增强可读性。但是,Auto-Layout 似乎并不关心,并且将标签的高度保留为显示拉丁文本,从而导致一些重音被剪掉。
在 iOS 中处理泰语文本的正确方法是什么?
编辑:这是一张显示问题的图片。(OK在iOS 7,CUT在iOS 8。)
注意:我尝试将clipToBounds属性设置为UILabelto NO,文本确实没有被剪裁。然而,这不是一个好的解决方案!如果我有两个标签一个在另一个上面,我可能会有重叠的文本......
我需要用泰语对文本文档进行矢量化(例如Bag of Words,doc2vec).
首先,我想要去在每个文档,省略除了泰国字符和英文单词(如没有标点符号,没有号码,只是撇号没有其他特殊字符)的一切.
对于英文文档,我使用这个正则表达式:
[^a-zA-Z' ]|^'|'$|''
对于泰语文档,我找不到合适的正则表达式.我知道泰语的Unicode块是u0E00-u0E7F.我尝试了[^?-?a-zA-Z' ]|^'|'$|''许多其他组合,但他们没有成功.
例如:我想要
"ทรูวิชั่นส์ประกาศถ่ายทอดสดศึกฟุตบอลพรีเมียร์ลีกอังกฤษครบทุกนัดเป็นเวลา3ปีตั้งแต่ฤดูกาล二千零十七分之二千零十六 - 二千零十九分之二千零十八พร้อมด้วยอีก5ลีกดังอาทิลาลีกาสเปน,กัลโชเซเรียเออิตาลีและลีกเอิ งฝรั่งเศสภายใต้แพ็กเกจสุดคุ้มทั้งผ่านมือถือและโทรทัศน์some,这里的英语单词!abc123"
成为:
"ทรูวิชั่นส์ประกาศถ่ายทอดสดศึกฟุตบอลพรีเมียร์ลีกอังกฤษครบทุกนัดเป็นเวลาปีตั้งแต่ฤดูกาลพร้อมด้วยอีกลีกดังอาทิลาลีกาสเปน,กัลโชเซเรียเออิตาลีและลีกเอิงฝรั่งเศสภายใต้แพ็กเกจสุดคุ้ม ทั้งผ่านมือถือและโทรทัศน์这里一些英语单词ABC"
如何获取String中的Unicode字符数?
给出一个char[]泰国字符:
[?, ?, ?, ?, ?, ?, ?]
Run Code Online (Sandbox Code Playgroud)
这在String中出现:อภิชาติ
String.length() 返回7.我知道(技术上)有7个字符,但是我需要一个能够返回5的方法.这就是屏幕上显示的字符空间的确切数量.
在过去的两个小时里,我有很多性感的时间,泰语脚本字符串在我的数据库中滑落.他们神秘地整理,输出时变异,没有自然秩序而且是一场灾难.
我想忽略任何带有Thai Script字符的字符串,但我不知道如何:
Pattern.compile("\\p{Thai}")在init上失败."[?-?]" - 那会不会有用?什么是正确的方法?
当我在控制台中打印泰国字符时,它显示出一些奇怪的特征.
public static void main(String[] args) throws Exception{
byte[] bytes = "???????".getBytes("TIS-620");
String str = new String(bytes);
System.out.println(str);
}
Run Code Online (Sandbox Code Playgroud)
它打印 ¢