精华内容
下载资源
问答
  • 快速通过Unicode将国家代码转换表情符号标志我正在寻找一种快速的方法来使类似:let germany = "DE"进入let flag = "\u{1f1e9}\u{1f1ea}"即D到1f1e9和E到1f1ea的映射是什么我正在寻找.utf8作为字符串,但这返回一...

    快速通过Unicode将国家代码转换为表情符号标志

    我正在寻找一种快速的方法来使类似:

    let germany = "DE"

    进入

    let flag = "\u{1f1e9}\u{1f1ea}"

    即D到1f1e9和E到1f1ea的映射是什么我正在寻找.utf8作为字符串,但这返回一个整数。

    FWIW我的总体目标是能够采用任意国家/地区代码并获得相应的表情符号标志。

    编辑:我也很好,只要持有一个做此映射的表(如果有的话)。 我在附近搜索,但没有找到。

    5个解决方案

    72 votes

    这是将两个字母的国家/地区代码转换为其表情符号标志的通用公式:

    func flag(country:String) -> String {

    let base = 127397

    var usv = String.UnicodeScalarView()

    for i in country.utf16 {

    usv.append(UnicodeScalar(base + Int(i)))

    }

    return String(usv)

    }

    let s = flag("DE")

    编辑糟糕,无需传递嵌套的String.UnicodeScalarView结构。 事实证明,String正是出于此目的使用了append方法。 所以:

    func flag(country:String) -> String {

    let base : UInt32 = 127397

    var s = ""

    for v in country.unicodeScalars {

    s.append(UnicodeScalar(base + v.value))

    }

    return s

    }

    再次编辑,在Swift 3中,他们取消了将UnicodeScalar附加到字符串的功能,并且使UnicodeScalar初始化程序失败(Xcode 8种子6),所以现在看起来像这样:

    func flag(country:String) -> String {

    let base : UInt32 = 127397

    var s = ""

    for v in country.unicodeScalars {

    s.unicodeScalars.append(UnicodeScalar(base + v.value)!)

    }

    return String(s)

    }

    matt answered 2020-07-22T14:45:22Z

    17 votes

    如果有人在Objective C中寻找解决方案,这是方便的类别:

    @interface NSLocale (RREmoji)

    + (NSString *)emojiFlagForISOCountryCode:(NSString *)countryCode;

    @end

    @implementation NSLocale (RREmoji)

    + (NSString *)emojiFlagForISOCountryCode:(NSString *)countryCode {

    NSAssert(countryCode.length == 2, @"Expecting ISO country code");

    int base = 127462 -65;

    wchar_t bytes[2] = {

    base +[countryCode characterAtIndex:0],

    base +[countryCode characterAtIndex:1]

    };

    return [[NSString alloc] initWithBytes:bytes

    length:countryCode.length *sizeof(wchar_t)

    encoding:NSUTF32LittleEndianStringEncoding];

    }

    @end

    测试:

    for ( NSString *countryCode in [NSLocale ISOCountryCodes] ) {

    NSLog(@"%@ - %@", [NSLocale emojiFlagForISOCountryCode:countryCode], countryCode);

    }

    输出:🇦🇩-公元🇦🇪-AE🇦🇫-自动对焦🇦🇬-AG🇦🇮-AI...

    RolandasR answered 2020-07-22T14:45:52Z

    6 votes

    马特答案的两种优化。

    无需在Swift 4中传递嵌套的String

    为了避免传递小写字符串,我添加了uppercased()

    这是代码。

    func flag(from country:String) -> String {

    let base : UInt32 = 127397

    var s = ""

    for v in country.uppercased().unicodeScalars {

    s.unicodeScalars.append(UnicodeScalar(base + v.value)!)

    }

    return s

    }

    Lumialxk answered 2020-07-22T14:46:25Z

    2 votes

    深入了解哑光答案

    Swift 2版本

    public static func flag(countryCode: String) -> Character {

    let base = UnicodeScalar("🇦").value - UnicodeScalar("A").value

    let string = countryCode.uppercaseString.unicodeScalars.reduce("") {

    var string = $0

    string.append(UnicodeScalar(base + $1.value))

    return string

    }

    return Character(string)

    }

    Swift 3版本,摘自[https://github.com/onmyway133/Smile/blob/master/Sources/Smile.swift#L52]

    public func emoji(countryCode: String) -> Character {

    let base = UnicodeScalar("🇦").value - UnicodeScalar("A").value

    var string = ""

    countryCode.uppercased().unicodeScalars.forEach {

    if let scala = UnicodeScalar(base + $0.value) {

    string.append(String(describing: scala))

    }

    }

    return Character(string)

    }

    onmyway133 answered 2020-07-22T14:46:53Z

    0 votes

    对于更实用的方法,不使用可变变量,请使用以下命令:

    private func flag(country: String) -> String {

    let base: UInt32 = 127397

    return country.unicodeScalars

    .flatMap({ UnicodeScalar(base + $0.value) })

    |> String.UnicodeScalarView.init

    |> String.init

    }

    |>运算符是函数应用程序运算符,它像“管道”一样工作,以获取更自然的读取顺序:我们获取标量,将它们映射为新的标量,将其转换为视图,并将其转换为字符串。

    它的定义如下:

    infix operator |> : MultiplicationPrecedence

    func |> (left: T, right: (T) -> U) -> U {

    return right(left)

    }

    没有自定义运算符,我们仍然可以没有可变状态,就像这样:

    private func flag(country: String) -> String {

    let base: UInt32 = 127397

    return String(String.UnicodeScalarView(

    country.unicodeScalars.flatMap({ UnicodeScalar(base + $0.value) })

    ))

    }

    但是恕我直言,这读起来有些“向后”,因为自然的操作流程既不读入也不读入,而是读了一点。

    Svein Halvor Halvorsen answered 2020-07-22T14:47:31Z

    展开全文
  • 本机支持OpenAPI 3.0.x,并通过内部转换支持Swagger / OpenAPI 1.2和2.0。 支持Node.js LTS版本。 用法 正在安装 npm i -g openapi-codegen 要么 克隆存储库,然后 npm i 要么 npx -p openapi-codegen cg ... ...
  • 表情符号转换为HTML思路解析

    千次阅读 2018-01-11 12:07:40
    最近在项目开发过程中,需要将客户端保存在数据库的表情符号,也就是\u开头的...如果包含表情符号,则进行转换; 剩余拼接到后面; 最后调用Java的类转换为html即可; 细节点:转换空格以及换行;关注博客关注更多文章

    最近在项目开发过程中,需要将客户端保存在数据库的表情符号,也就是\u开头的数据,进行转义,那如何进行转义;

    提供思路:
    待转义的字符串;
    准备正则表达式,主要是匹配表情符号;
    循环遍历中进行截取并且判断;
    如果包含表情符号,则进行转换;
    剩余拼接到后面;
    最后调用Java的类转换为html即可;
    细节点:转换空格以及换行;

    关注博客

    关注更多文章

    展开全文
  • 最近碰到一个存储表情失败,需要做到三件事, 1.表和该项都需要支持 这时候,只是数据库表支持存储,但是... 把需要存储的表情,在保存的时候,通过Base64封装一层,而获取的时候,不用转换。 public static ...

    最近碰到一个存储表情失败,需要做到三件事,

    1.表和该项都需要支持

    这时候,只是数据库表支持存储,但是存储转换的时候,还是会有问题,以下两种方式可以处理:

    2.代码进行转义处理  (推荐: 代码处理对于程序员来说最快,因为修改数据库编码,有时建表,会修改编码格式)

       把需要存储的表情,在保存的时候,通过Base64封装一层,而获取的时候,不用转换。

    public static void main(String args[]){
            String str = "?夏天";
            try {
                String s = new String(Base64.getEncoder().encode(str.getBytes()), "UTF-8");
                System.out.println(s);
                String ss = new String(Base64.getDecoder().decode(s));
                System.out.println(ss);
            }catch (UnsupportedEncodingException e){
     
                System.out.println(e.getCause());
            }
     
        }

    3.修改数据库的默认编码

        a.查看数据库的编码格式

    1

    2

    3

    SHOW VARIABLES WHERE Variable_name LIKE 'character_set_%' OR Variable_name LIKE 'collation%';

    SHOW VARIABLES Like '%char%'

    修改配置文件my.cnf   增加 character-set-server=utf8mb4

    如果不知道配置文件在哪里的话可以根据一下命令查找

    1

    2

    3

    mysqld --verbose --help|grep -A 1 'Default options'

    或者是执行:

    mysql --verbose --help|grep -A 1 'Default options'

    通常服务器首先会读取/etc/my.cnf文件,如果发现该文件不存在,再依次尝试从后面的几个路径进行读取。

    修改配置文件后保存,并重启mysql服务

    1

    2

    3

    service mysqld restart

    service mysql restart

    如果数据库、表已经创建可以直接修改数据库或表的编码格式

    查看数据表的编码格式

    1

    show create table <表名>;

    修改数据库的编码格式

    1

    mysql>alter database <数据库名> character set utf8mb4;

    修改数据表格编码格式

    1

    alter table <表名> character set utf8mb4;

    修改字段编码格式

    1

    alter table <表名> change <字段名> <字段名> <类型> character set utf8mb4;

    饮水思源: https://www.cnblogs.com/rainerl/p/10950472.html

    展开全文
  • 汉字转unicode:   StringEscapeUtils.escapeJava(user.getUserName())   unicode转汉字:   StringEscapeUtils.unescapeJava(user.getUserName()

    汉字转unicode:

     

    StringEscapeUtils.escapeJava(user.getUserName())

     

    unicode转汉字:

     

    StringEscapeUtils.unescapeJava(user.getUserName()

    展开全文
  • 最近对接ios、安卓客户端,需要处理emoji等表情符号,网上总结:1.过滤掉emoji表情符2.修改数据库的编码格式等,让其支持存储emoji以下分别对两种方案进行描述:第一种:过滤掉emoji表情符,统一用*代替利用emoji的...
  • Java代码java.sql.SQLException: Incorrect string value: '\xF0\x9F\x92\x94' for column 'name' at row 1at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1073)at ...
  • 表情符号数据库 资源资源 所有不含表情符号的...将代码点转换表情符号 的Unicode代码点 :smiling_face_with_sunglasses: 是1f60e 。 Java脚本 String . fromCodePoint ( parseInt ( '1f60e' , 16 ) ) ; 有趣的链接
  • Bits'N'Picas是一组用于创建和转换位图和表情符号字体的工具。 位图字体功能可以通过GUI或从命令行访问。 表情符号字体功能只能从命令行访问。 使用GUI创建和编辑位图字体 不带任何参数或使用edit命令启动Bits'N'...
  • pom依赖 java工具类 测试 Java Url编码转换 在APP开发中,大多需要涉及表情符号丰富APP,但是因为我们的数据库一般是utf8编码,是3个字节,而表情...以下是通过emoji-Java解决数据库不能存储4字节表情符号的问题。
  • import java.io.UnsupportedEncodingException; import java.net.URLDecoder; import java.net.URLEncoder; public class StringToUtf8Utisl { ... * 将String字符串转换为UTF-8编码字符串 * @param str * ...
  • 当保存字符串到数据库里出现\xF0\x9F\x92\x94类似问题时,发现竟是因为输入了Emoji表情的原因,由于我的mysql数据库是utf8字符集,而且Emoji表情等特殊符号要占四个字节,所以导致数据库不能正常存入。 找了很多方法...
  • Java 解决Emoji表情过滤问题

    万次阅读 2018-02-26 14:29:57
    问题: Emoji表情从三方数据中获取没有过滤,导致存入DB的时候报错。原因:UTF-8编码有可能是两个、三个、四个字节。Emoji表情是4个字节,而...2,写个工具类:过滤掉emoji表情符号public class EmojiFilter { ...
  • 一种在每种类型之间转换表情符号字符串的工具,例如软银行表情符号,unicode表情符号,别名表情符号,html表情符号。 将软银行表情符号转换为unicode时,我们使用以下文件: : 快速入门快速入门 将此添加到您的...
  • 前言:最近开发的iOS项目因为需要用户文本的存储,自然就遇到了emoji等表情符号如何被mysql DB支持的问题。困扰了数日,在就要绝望放弃的边缘,终于完成了转换和迁移。在此特别分析和整理,方便更多人。问题描述:...
  • Emoji表情从三方数据中获取没有过滤,导致存入DB的时候报错。...将已经建好的表也转换成utf8mb42,写个工具类:过滤掉emoji表情符号public class EmojiFilter {private static boolean isEmojiCha...
  • java web处理表情

    千次阅读 2018-01-15 16:40:22
    1、问题描述 在输入框输入表情表情到后台会...将表情的代码,即\uD83D\uDE0A 转为类似html的符号存入数据库,去出来展示的时候在转换为\uD83D\uDE0A 展示。 过程 导包 dependency> groupId>com.vdurmontgroup
  • Emoji表情从三方数据中获取没有过滤,导致存入DB的时候报错。...将已经建好的表也转换成utf8mb42,写个工具类:过滤掉emoji表情符号public class EmojiFilter {private static boolean isEmojiCha...
  • Emoji表情从三方数据中获取没有过滤,导致存入DB的时候报错。...将已经建好的表也转换成utf8mb42,写个工具类:过滤掉emoji表情符号public class EmojiFilter {private static boolean isEmojiCh...
  • 本文作者原文链接本人使用的是第三种引入jar的方法问题:emoji表情从三方数据中获取没有过滤,导致存入db的时候报错。原因:utf-8编码有可能是两个、三个、四个字节...2,写个工具类:过滤掉emoji表情符号public cla...
  • 本文作者我是周洲本人使用的是第三种引入jar的方法问题:Emoji表情从三方数据中获取没有过滤,导致存入DB的时候报错。原因:UTF-8编码有可能是两个、三个、四个字节...2,写个工具类:过滤掉emoji表情符号public cl...
  • 最近开发的iOS项目因为需要用户文本的存储,自然就遇到了emoji等表情符号如何被mysql DB支持的问题。困扰了数日,在就要绝望放弃的边缘,终于完成了转换和迁移。在此特别分析和整理,方便更多人。   问题描述: ...
  • 注:文中可能有错误,欢迎指出来,谢谢举例说明emoji表情 1:比如你的wifi热点名称是一个章鱼符号 u+1F4192:转化成UTF-8为: F0 9F 90 993: 发现在Java的JVM中是用UTF-16存储表示的,也就是u+1F419转化为UTF-16...
  • XXL工具 XXL-TOOL,一系列保持Java高效的工具。 介绍 XXL-TOOL是使Java保持高效的一系列...表情符号模块 一个灵活可扩展的Emoji表情编解码库,可快速实现Emoji表情的编解码 杰森模块 json序列化,反序列化库 光纤模
  • 前言:最近开发的iOS项目因为需要用户文本的存储,自然就遇到了emoji等表情符号如何被mysql DB支持的问题。困扰了数日,在就要绝望放弃的边缘,终于完成了转换和迁移。在此特别分析和整理,方便更多人。问题描述:...
  • 前言:最近开发的iOS项目因为需要用户文本的存储,自然就遇到了emoji等表情符号如何被mysql DB支持的问题。困扰了数日,在就要绝望放弃的边缘,终于完成了转换和迁移。在此特别分析和整理,方便更多人。问题描述:...

空空如也

空空如也

1 2 3 4
收藏数 68
精华内容 27
关键字:

java转换表情符号

java 订阅