我在看的算法,可以用变音符号(字符之间映射波浪,抑扬,插入符号,变音符号,卡隆)和他们的"简单"的角色.
例如:
? ? ? ñ ? ? ? ? ? ? ? ? ? ? ? --> n
á --> a
ä --> a
? --> a
? --> o
Run Code Online (Sandbox Code Playgroud)
等等.
我想用Java做这个,虽然我怀疑它应该是Unicode-y,并且应该可以在任何语言中合理地使用.
目的:允许轻松搜索带有变音符号的单词.例如,如果我有一个网球运动员数据库,并且输入了Björn_Borg,我还会保留Bjorn_Borg,这样如果有人进入Bjorn而不是Björn,我就能找到它.
我有一个ActiveRecord模型,Foo有一个name字段.我希望用户能够按名称搜索,但我希望搜索忽略大小写和任何重音.因此,我还存储了一个canonical_name要搜索的字段:
class Foo
validates_presence_of :name
before_validate :set_canonical_name
private
def set_canonical_name
self.canonical_name ||= canonicalize(self.name) if self.name
end
def canonicalize(x)
x.downcase. # something here
end
end
Run Code Online (Sandbox Code Playgroud)
我需要填写"这里的东西"来替换重音字符.还有什么比这更好的了
x.downcase.gsub(/[àáâãäå]/,'a').gsub(/æ/,'ae').gsub(/ç/, 'c').gsub(/[èéêë]/,'e')....
Run Code Online (Sandbox Code Playgroud)
而且,就此而言,由于我不在Ruby 1.9上,我不能将这些Unicode文字放在我的代码中.实际的正则表达式看起来会更加丑陋.
是否有任何免费的java库,我可以用它来将一个编码中的字符串转换为其他编码,类似于iconv?我正在使用Java 1.3版.
我已经找到了如何在stackoverflow上删除变音字符的答案,但是请你告诉我是否可以将变音字符改为非变音字符?
哦..我想到.NET(或其他如果不可能)
我需要将UTF-8商标标志转换为ISO Latin 1,并将其保存到数据库中,该数据库也是ISO Latin 1编码的.
我怎么能在java中这样做?
我尝试过类似的东西
String s2 = new String(s1.getBytes("ISO-8859-1"), "utf-8");
Run Code Online (Sandbox Code Playgroud)
但它似乎不像我预期的那样工作.
是的,我们正在谈论ASCII码.我的appologies我不是德尔福开发人员.
java ×3
unicode ×3
diacritics ×2
.net ×1
activerecord ×1
ascii ×1
character ×1
converters ×1
delphi ×1
replace ×1
ruby ×1
utf-8 ×1