我一直在尝试编写一个简单的脚本,可以将用户输入(源自iPhone)保存到文本文件中.我遇到的问题是,当用户使用表情符号图标时,它会打破整个事情.
操作系统:Ubuntu
Python版本:2.7.3
我的代码目前看起来像这样
f = codecs.open(path, "w+", encoding="utf8")
f.write("Desc: " + json_obj["description"])
f.close()
Run Code Online (Sandbox Code Playgroud)
当在描述变量中传递表情符号字符时,我收到错误:
UnicodeEncodeError:'ascii'编解码器无法编码位置7-8中的字符:序数不在范围内(128)
任何可能的帮助表示赞赏.
我们正在努力,我们希望用户能够同时使用的表情符号的语法项目(如:smile:,:heart:,:confused:,:stuck_out_tongue:),以及正常的表情符号(如:),<3,:/,:p)
我在使用表情符号语法时遇到问题,因为有时这些字符序列会出现在:
://example.com:pencil:我怎样才能找到这些表情字符序列,而不是当其他字符靠近它们时?
我用于所有表情符号的整个正则表达式是巨大的,所以这里是一个trimed down版本:
(\:\)|\:\(|<3|\:\/|\:-\/|\:\||\:p)
Run Code Online (Sandbox Code Playgroud)
您可以在这里播放它的演示:http://regexr.com/3a8o5
我正在开发一个在文本文件中写入输出的java程序.当出现问题时,我必须把这个ASCII艺术:
¯\_(?)_/¯
Run Code Online (Sandbox Code Playgroud)
我这样做了BufferedOutputStream:
errorOutput.writeln("##################################\n"
+ "##### Error Output ######\n"
+ "##### ¯\\_(?)_/¯ ######\n"
+ "##################################\n");
Run Code Online (Sandbox Code Playgroud)
问题是,当我看到用java编写的txt日志时,我得到了这个:
##################################
##### Error Output ######
##### ¯\_(ツ)_/¯ ######
##################################
Run Code Online (Sandbox Code Playgroud)
如何在Java中编写正确的ASCII表情符号?
我试图显示一个字符html实体
echo htmlentities(htmlentities("&"));
//outputs &
echo htmlentities(htmlentities("<"));
//outputs <
Run Code Online (Sandbox Code Playgroud)
但它似乎不适用于表情符号
echo htmlentities(htmlentities(""));
//outputs
Run Code Online (Sandbox Code Playgroud)
我怎样才能输出😎?
我试图显示用户输入的所有html实体编码的字符串.
echo htmlentities(htmlentities($input))
例:
"this & that " -> "this & that 😎"
我已经设置了一个小的AutoHotkey脚本,它使用热字符串来允许我键入一些表情符号和其他特殊字符:
#SingleInstance force
#Hotstring * ?
::–::–
::†::†
::π::
::&shrug;::¯\_(?)_/¯
::&tm;::™
::&c;::©
::&r;::®
::&tableflip;::(?°?°??? ???
::&music;::?
::&piano;::
::&cmark;::?
::&xmark;::?
::&hourglass;::?
Run Code Online (Sandbox Code Playgroud)
该脚本也可以在PasteBin上使用.
但是,某些替换在任何地方都不起作用,例如在Telegram Desktop中:

这两个表情符号最初都是从Telegram Desktop复制的,因此它们肯定受到支持.
为什么这不按预期工作?
我在Windows 10(版本1511),Sublime Text 3(3103)和Telegram Desktop 0.9.28上运行版本1.1.23.3中的AutoHotkey Unicode 64位.
我正在和Postgres和新手一起工作,
我必须将用户的评论(如Facebook评论)存储到数据库中.可能我会使用列类型"text"来存储注释.
如果注释与emojis(unicode)混淆,文本类型就足够了,或者我应该使用任何其他列类型?
因此众所周知,苹果在unicode中支持表情符号的图像可以以高达160x160像素的分辨率提取.有一个工具可以在OS X上通过从"apple color emoji"字体中提取数据来执行此操作:https://github.com/tmm1/emoji-extractor
我有兴趣在iOS上以类似的方式提取/利用苹果的Emoji图像,我找到了以下解决方案,并且非常喜欢这里的实现:https://stackoverflow.com/a/38809531/4556704
extension String {
func image() -> UIImage {
let size = CGSize(width: 30, height: 35)
UIGraphicsBeginImageContextWithOptions(size, false, 0);
UIColor.whiteColor().set()
let rect = CGRect(origin: CGPointZero, size: size)
UIRectFill(CGRect(origin: CGPointZero, size: size))
(self as NSString).drawInRect(rect, withAttributes: [NSFontAttributeName: UIFont.systemFontOfSize(30)])
let image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return image
}
}
Run Code Online (Sandbox Code Playgroud)
但是,我遇到了一个问题,即我遇到了这个实现.如果我使用上面的字符串扩展名,我很明显结果图像的分辨率不是160x160像素.我的意思是,如果我要在项目的资产中包含一个160x160的图像,我无法生成质量相当的图像.
这是什么原因,如果不向我的项目导入超过1700个表情符号图像,我可以解决这个问题吗?我认为iOS上的字体仍然必须包含生成160x160图像样本所需的数据.String扩展是理想的,因为它允许我比我简单地导入所有这些图像更自由地引用表情符号字符.
我认为这可能需要一些低级代码,这可能比它的价值更麻烦,但我真的很想知道更多关于这个问题的根源和可能的修复.我确信这归因于苹果没有将表情符号渲染到高于必要水平的水平,但肯定有一些方法可以覆盖它.另外我知道还有其他高分辨率的表情符号图像集,这个问题与此无关.
编辑10/18/16:我得出结论,问题可归因于被采样的源图像不具有可能的最高分辨率.似乎表情符号没有以高于48x48像素的分辨率进行渲染,因为已经证明表情符号图像可以在OS X上渲染到160x160像素,并且可以从"Apple Color Emoji.ttf/.ttc"中删除"在160x160像素.我不确定是否有可能解决这个问题,因为它似乎是iOS使用unicode字符代码映射到png图像数据的强硬限制.
Emojis仅在tmux内部的vim中显示不正确,并且仅在tmux内的vim中显示.Emojis在tmux之外的vim中按预期工作.Emojis在tmux内部的其他程序中按预期工作.
vim ~/echoemoji.sh
Run Code Online (Sandbox Code Playgroud)
sh ./echoemoji.sh
Run Code Online (Sandbox Code Playgroud)
nano ./echoemoji.sh
Run Code Online (Sandbox Code Playgroud)
vim ./echoemoji.sh
Run Code Online (Sandbox Code Playgroud)
的vimrc
set encoding=utf-8
set t_Co=256
set termencoding=utf-8
:set term
term=xterm-256color
Run Code Online (Sandbox Code Playgroud)
tmux.conf
set -g default-terminal "xterm-256color"
Run Code Online (Sandbox Code Playgroud)
iterm2
Character Encoding: UTF-8
Report Terminal Type: xterm-256color
Font: Hack
Non-ASCII Font: Inconsolata-dz for Powerline
Use HFS+ Unicode normalization (checked)
Run Code Online (Sandbox Code Playgroud)
zshrc
alias tmux="tmux -u" # Tried with and without
Run Code Online (Sandbox Code Playgroud) 我被困在其中一个组件上使用jquery表情符号插件,直到完成要构建的自定义插件。
出于某种原因,当我在componentDidMount内调用emoji插件时,除使用自定义按钮显示emoji模态的功能外,其他所有东西都起作用。当我使用自定义按钮时,表情符号插件不会将事件附加到按钮上。
疯狂的是,我可以在useEffect中使用相同的代码,并将事件侦听器附加到自定义按钮上。
通过在Web控制台中查看页面加载后附加到元素的事件,我验证了事件监听器是否未附加。
您可以通过将此组件放置在应用程序中的某个位置(并使用emoji-area插件导入jquery)来轻松重现此问题:
import React, {useEffect} from 'react';
export default function CommentInput(props) {
useEffect(() => {
const id = props.blurtId,
$wysiwyg = $('#' + id).emojiarea({
button: '#emoji-btn' + id
});
$.emojiarea.path = '/js/jquery/emojis/';
$.emojiarea.icons = {
':smile:' : 'smile.png',
':angry:' : 'angry.png',
':flushed:' : 'flushed.png',
':neckbeard:' : 'neckbeard.png',
':laughing:' : 'laughing.png'
};
}, []);
return (
<>
<textarea id={props.blurtId} className='blurt-comment-input' />
<i id={'emoji-btn' + props.blurtId} className='fa fa-smile emoji-btn' />
</>
)
} …Run Code Online (Sandbox Code Playgroud) 在我创建的混合 Android/Cordova 游戏中,我让用户以表情符号 + 字母数字的形式提供标识符 - 即 0..9,A..Z,a..z - 名称。例如
??堆栈溢出
服务器端存储用户标识符时,Emoji 和 Name 部分分开存储,仅 Name 部分需要唯一。游戏不时显示“联赛表”,以便用户可以查看与其他玩家相比他们的表现如何。为此,服务器发回由表情符号、名称和分数组成的十个“高分”值的序列。
然后在一个包含三列的表格中向用户呈现 - 表情符号、名称和分数各一列。这就是我遇到一个小问题的地方。最初我很天真地认为我可以通过简单地查看handle.codePointAt(0). 当我意识到表情符号实际上可以是一个或多个 16 位 Unicode 值的序列时,我将代码更改如下
第 1 部分:剖析用户提供的“句柄”
var i,username,
codepoints = [],
handle = "??StackOverflow",
len = handle,length;
while ((i < len) && (255 < handle.codePointAt(i)))
{codepoints.push(handle.codePointAt(i));i += 2;}
username = handle.substring(codepoints.length + 1);
Run Code Online (Sandbox Code Playgroud)
在这一点上,我有“解剖”句柄
codepoints = [128587, 8205, 65039];
username = 'Stackoverflow;
Run Code Online (Sandbox Code Playgroud)
对上述i += 2和使用的解释说明handle.length。 这篇文章建议