Ruby on rails 将utf代码转换为字母
我用的是Ruby 我在数据库中有这样的价值 25.02.2020 13:57:56:\nu:633;644;627;645; u:627;633;62a;627;62f;u:645;6cc;634;647; u:644;637;641; u:6a9;646;6cc;62f;u:622;645;648;632;634; u:6a9;627;631; u:628;627; u:627;6cc;646; u:628;631;646;627;645;647; u:627;632; u:635;641;631; u:62a;627; u:635;62f;u:631;648; u:628;641;631;645;627;6cc;6cc;62f;u:645;645;646;648;646; u:627;632; u:634;645;627;\n\n\nССццС 可以用红宝石把它转换成普通的波斯语字母吗? 一定是这样 13:57:56: سلام استاد میشه لطف کنید آموزش کار با این برنامه از صفر تا صد رو بفرمایید ممنون از شما С砦砦Ruby on rails 将utf代码转换为字母,ruby-on-rails,ruby,utf-8,Ruby On Rails,Ruby,Utf 8,我用的是Ruby 我在数据库中有这样的价值 25.02.2020 13:57:56:\nu:633;644;627;645; u:627;633;62a;627;62f;u:645;6cc;634;647; u:644;637;641; u:6a9;646;6cc;62f;u:622;645;648;632;634; u:6a9;627;631; u:628;627; u:627;6cc;646; u:628;631;646;627;645;647; u:627;632; u:635;641;6
非常感谢您的帮助字符串中的Unicode值具有特定的模式:
u:uu;;u_;;_;代码>其中,每个\uuuuuuuuuuuuuu
都是表示码点的十六进制值
您可以使用regexp匹配该模式,并通过gsub
将编码值替换为各自的Unicode字符:
str = '25.02.2020 13:57:56:\nu:633;644;627;645; u:627;633;62a;627;62f; u:645;6cc;634;647; u:644;637;641; u:6a9;646;6cc;62f; u:622;645;648;632;634; u:6a9;627;631; u:628;627; u:627;6cc;646; u:628;631;646;627;645;647; u:627;632; u:635;641;631; u:62a;627; u:635;62f; u:631;648; u:628;641;631;645;627;6cc;6cc;62f; u:645;645;646;648;646; u:627;632; u:634;645;627;\n\n\nСервис'
str.gsub(/u:((?:\h+;)+)/) { Regexp.last_match(1).split(';').map(&:hex).pack('U*') }
#=> "25.02.2020 13:57:56:\\nسلام استاد میشه لطف کنید آموزش کار با این برنامه از صفر تا صد رو بفرمایید ممنون از شما\\n\\n\\nСервис"
循序渐进:(每场比赛)
- regexp与“u:633;644;627;645;”匹配
Regexp.last\u match(1)
返回第一个捕获组“633;644;627;645;”
split(“;”)
将其转换为[“633”、“644”、“627”、“645”]
map(&:hex)
将元素转换为[1587160415751605]
pack('U*')
将它们解释为Unicode码点并返回“سلام”
字符串中的Unicode值具有特定的模式:
u:uu;;u_;;_;代码>其中,每个\uuuuuuuuuuuuuu
都是表示码点的十六进制值
您可以使用regexp匹配该模式,并通过gsub
将编码值替换为各自的Unicode字符:
str = '25.02.2020 13:57:56:\nu:633;644;627;645; u:627;633;62a;627;62f; u:645;6cc;634;647; u:644;637;641; u:6a9;646;6cc;62f; u:622;645;648;632;634; u:6a9;627;631; u:628;627; u:627;6cc;646; u:628;631;646;627;645;647; u:627;632; u:635;641;631; u:62a;627; u:635;62f; u:631;648; u:628;641;631;645;627;6cc;6cc;62f; u:645;645;646;648;646; u:627;632; u:634;645;627;\n\n\nСервис'
str.gsub(/u:((?:\h+;)+)/) { Regexp.last_match(1).split(';').map(&:hex).pack('U*') }
#=> "25.02.2020 13:57:56:\\nسلام استاد میشه لطف کنید آموزش کار با این برنامه از صفر تا صد رو بفرمایید ممنون از شما\\n\\n\\nСервис"
循序渐进:(每场比赛)
- regexp与“u:633;644;627;645;”匹配
Regexp.last\u match(1)
返回第一个捕获组“633;644;627;645;”
split(“;”)
将其转换为[“633”、“644”、“627”、“645”]
map(&:hex)
将元素转换为[1587160415751605]
pack('U*')
将它们解释为Unicode码点并返回“سلام”
“我在数据库中有这样的价值”——我可以问一下为什么吗?一开始不以这种方式存储数据可能会更容易。“我在数据库中有这样的价值”——请问为什么?一开始不以这种方式存储数据可能更容易。