Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 将utf代码转换为字母_Ruby On Rails_Ruby_Utf 8 - Fatal编程技术网

Ruby on rails 将utf代码转换为字母

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

我用的是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: سلام استاد میشه لطف کنید آموزش کار با این برنامه از صفر تا صد رو بفرمایید ممنون از شما С砦砦


非常感谢您的帮助

字符串中的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码点并返回
    “سلام”
“我在数据库中有这样的价值”——我可以问一下为什么吗?一开始不以这种方式存储数据可能会更容易。“我在数据库中有这样的价值”——请问为什么?一开始不以这种方式存储数据可能更容易。