草庐IT

php - 在 PHP 中使用 ISO-8859-1 编码拉丁字符

我想使用PHP将包含à等拉丁字符的url编码为ISO-8859-1。编码后的字符串将用于执行对网络服务的请求。所以如果请求是:http://www.mywebservice.com?param=à编码后的字符串应该是:http://www.mywebservice.com?param=%E0我试过使用PHP的函数urlencode()但它返回以UTF-8编码的输入:http://www.mywebservice.com?param=%C3%A0 最佳答案 使用utf8_decode在urlencode之前:urlencode(utf

php - 非拉丁词的 str_word_count()?

我正在尝试计算用非拉丁语(保加利亚语)编写的变量中的单词数。但似乎str_word_count()没有计算非拉丁词。php文件的编码是UTF-8$str="текстнакирилица";echo'Numberofwords:'.str_word_count($str);//thisreturns0 最佳答案 你可以用正则表达式来做:$str="текстнакирилица";echo'Numberofwords:'.count(preg_split('/\s+/',$str));这里我将单词定界符定义为空格字符。如果可能有其他

php - 正则表达式 - preg_match 拉丁和希腊字符

这个问题在这里已经有了答案:MatchingUTFCharacterswithpreg_matchinPHP:(*UTF8)WorksonWindowsbutnotLinux(3个答案)关闭9年前。我正在尝试为任何给定的字符串创建一个正则表达式。目标:删除所有不是“latin”或“lowercasegreek”或“numbers”的字符".到目前为止我做了什么:[^a-z0-9]这非常适合拉丁字符。当我尝试这个时:[^a-z0-9α-ω]运气不好。有效但遗漏了任何其他符号,如!!#$%@%#$@,`我对正则表达式的了解有限。任何帮助将非常感激!编辑:下面发布的是匹配指定字符并从中创建一

php - mb_substr 在剥离 UTF-8 文本时在末尾添加 3 个点 (...),而在文本为拉丁文时不添加它们

我有这样的代码:if(strlen($text)>=15)$text=mb_substr($text,0,15,'UTF-8');它可以正常工作,但问题是,当文本是拉丁文(例如英文)时,当它剥离它时,它最后不会显示3个点。另一方面,当文本是其他需要UTF-8编码的语言时,它会在末尾添加3个点。示例:Whatarecellsmadeof被替换为Whatarecells另一方面:で作られた細胞は何ですか被替换为で作られた細...我错过了什么? 最佳答案 发生这种情况是因为strlen()以二进制形式返回字符串的长度,即八位字节数。因为u

PHP:检查来自任何基于拉丁语的语言的字母字符?

我想使用PHP检查字符串是否仅包含字母字符(我不想允许任何数字或特殊字符,如!@#$%^&*)。ctype_alpha()似乎很适合这个目的。问题是我想允许重音字母,例如法语等。例如,我想允许“Lórien”。我知道ctype_alpha()可以与set_locale()一起使用,但是对于这个用例来说这似乎仍然太有限了,因为我想允许所有字符以拉丁语为基础的语言。有什么想法可以最好地实现这一目标吗?注意:解决方案发布在HowcanIdetectnon-westerncharacters?非常适合显式检测非拉丁字符,但它允许特殊字符和空格,这是我不想允许的:preg_match('/[^\

php - Codeigniter 的 url_title() 将 UTF8 字符更改为指定的拉丁文

是否有可能使url_title()产生此字符串的改写:čolićnešto进入:colicnesto我相信这对于基于拉丁语的UTF8语言以及为非拉丁语语言设置更漂亮和更具描述性的URL可能很有用。 最佳答案 只需绑定(bind)到convert_accented_characters函数:url_title(convert_accented_characters('čolić')); 关于php-Codeigniter的url_title()将UTF8字符更改为指定的拉丁文,我们在Sta

java - 应使用哪种罗马化标准来改进 ICU4j 的阿拉伯语-拉丁语音译?

我们需要将阿拉伯文本音译为拉丁字符(不带变音符号)并将其显示给用户。我们目前正在为此使用IBMICU4j。API不能很好地将阿拉伯文本翻译成正确可读的拉丁字符。请引用以下示例:例子阿拉伯语文本:صدامحسينالتكريتيGoogle的音译输出:萨达姆·侯赛因·提克里蒂ICU4J的音译输出:ṣdạmḥsynạltkryty我们如何改进ICU4j库的音译输出?ICU4J为我们提供了编写自己的规则的选项,但我们目前陷入困境,因为我们团队中没有人懂阿拉伯语,也无法找到任何可以遵循的合适标准。 最佳答案 我花了4个小时研究任何其他来源来

java - 在 JSP 中使用资源包属性进行国际化,非拉丁文本变为 Mojibake

我有以下index.jsp:和属性文件messages_ru_RU.properties:login=Логин问题是我在输出中得到了垃圾unicode字符:Ëîãèí更新将.properies文件编码更改为UTF-8。最新输出:Ðогин请帮我把它改成正常的西里尔字母。属性文件:messages_ru_RU.properties 最佳答案 属性文件符合specification使用ISO-8859-1阅读。...theinput/outputstreamisencodedinISO8859-1characterencodi

java - 如何将拉丁 unicode 字符替换为 [a-z] 字符

我正在尝试将所有拉丁unicode字符转换为它们的[a-z]表示ó-->oí-->i我可以很容易地一个一个地做,例如:myString=myString.replaceAll("ó","o");但是由于有大量的变化,这种方法是不切实际的在Java中还有其他方法吗?例如正则表达式,或实用程序库用例:1-城市名称从另一种语言翻译成英文,例如圣埃斯皮里图-->圣埃斯皮里图 最佳答案 此答案需要Java1.6或更高版本,其中添加了java.text.Normalizer.Stringnormalized=Normalizer.normali

java - 从拉丁字符中删除重音符号(变音符号)以进行比较

这个问题在这里已经有了答案:Removediacriticalmarks(ńǹňñṅņṇṋṉ̈ɲƞᶇɳȵ)fromUnicodechars(12个答案)关闭8年前。我需要将使用拉丁字母书写的欧洲地名与某些字符上的重音符号(变音符号)进行比较。有很多中欧和东欧的名字都是用重音符号写的,比如ž和ü上的拉丁字符,但有些人只用普通的拉丁字符写名字,而不用重音符号,例如z和u。我需要一种方法让我的系统识别例如mškžilina与mskzilina相同,并且对于使用的所有其他重音字符都相似。有没有简单的方法可以做到这一点?