Ama*_*_05 3 bash character-encoding sed text-processing replace
我已经阅读了本网站或 Stackoverflow 上几乎所有有关此主题的答案,但未能解决以下问题。
\n当我从 PDF 文件复制文本并将其粘贴到文本文件中时file.txt,文本看起来很正常,但是当我使用 cat 命令时:
cat -v file.txt\nRun Code Online (Sandbox Code Playgroud)\n输出是:
\nvbox = None\nM-BM- M-BM- M-BM- M-BM- def __init__(self, title="Error!", parent=None,\nM-BM- M-BM- M-BM- M-BM- M-BM- M-BM- M-BM- M-BM- M-BM- M-BM- M-BM- M-BM- M-BM- M-BM- M-BM- M-BM- M-BM- M-BM- flags=Gtk.DialogFlags.MODAL, buttons=("NO",\nM-BM- M-BM- M-BM- M-BM- M-BM- M-BM- M-BM- M-BM- M-BM- M-BM- M-BM- M-BM- M-BM- M-BM- M-BM- M-BM- M-BM- M-BM- Gtk.ResponseType.NO, "_YES",\nM-BM- M-BM- M-BM- M-BM- M-BM- M-BM- M-BM- M-BM- M-BM- M-BM- M-BM- M-BM- M-BM- M-BM- M-BM- M-BM- M-BM- M-BM- M-BM- M-BM- M-BM- M-BM- M-BM- M-BM- M-BM- M-BM- M-BM- Gtk.ResponseType.YES)):\nM-BM- M-BM- M-BM- M-BM- M-BM- M-BM- M-BM- M-BM- super().__init__(title=title, parent=parent, flags=flags,\nM-BM- M-BM- M-BM- M-BM- M-BM- M-BM- M-BM- M-BM- M-BM- M-BM- M-BM- M-BM- M-BM- M-BM- M-BM- M-BM- M-BM- M-BM- M-BM- M-BM- M-BM- M-BM- M-BM- M-BM- M-BM- buttons=buttons)\nM-BM- M-BM- M-BM- M-BM- M-BM- M-BM- M-BM- M-BM- self.vbox = self.get_content_area()\nM-BM- M-BM- M-BM- M-BM- M-BM- M-BM- M-BM- M-BM- self.hbox = Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL,\nspacing=5)\nM-BM- M-BM- M-BM- M-BM- M-BM- M-BM- M-BM- M-BM- icon_theme = Gtk.IconTheme.get_default()\nM-BM- M-BM- M-BM- M-BM- M-BM- M-BM- M-BM- M-BM- icon = icon_theme.load_icon("dialog-question", 48,\nM-BM- M-BM- M-BM- M-BM- M-BM- M-BM- M-BM- M-BM- M-BM- M-BM- M-BM- M-BM- M-BM- M-BM- M-BM- M-BM- M-BM- M-BM- M-BM- M-BM- M-BM- M-BM- M-BM- M-BM- M-BM- M-BM- M-BM- M-BM- M-BM- M-BM- M-BM- M-BM- M-BM- M-BM- M-BM- M-BM- Gtk.IconLookupFlags.FORCE_SVG)\nM-BM- M-BM- M-BM- M-BM- M-BM- M-BM- M-BM- M-BM- image = Gtk.Image.new_from_pixbuf(icon)\nM-BM- M-BM- M-BM- M-BM- M-BM- M-BM- M-BM- M-BM- self.hbox.pack_start(image, False, False, 5)\nM-BM- M-BM- M-BM- M-BM- M-BM- M-BM- M-BM- M-BM- self.vbox.add(self.hbox)\nM-BM- M-BM- M-BM- M-BM- def set_message(self, message, add_msg=None):\nM-BM- M-BM- M-BM- M-BM- M-BM- M-BM- M-BM- M-BM- self.hbox.pack_start(Gtk.Label(message), False, False, 5)\nM-BM- M-BM- M-BM- M-BM- M-BM- M-BM- M-BM- M-BM- if add_msg != None:\n\nRun Code Online (Sandbox Code Playgroud)\n或者当我使用bat 命令时:
\nbat -A file.txt\nRun Code Online (Sandbox Code Playgroud)\n输出是:
\nvbox\xe2\x80\xa2=\xe2\x80\xa2None\xe2\x90\x8a\n\\u{a0}\\u{a0}\\u{a0}\\u{a0}def\xe2\x80\xa2__init__(self,\xe2\x80\xa2title="Error!",\xe2\x80\xa2parent=None,\xe2\x90\x8a\n\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}flags=Gtk.DialogFlags.MODAL,\xe2\x80\xa2buttons=("NO",\xe2\x90\x8a\n\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}Gtk.ResponseType.NO,\xe2\x80\xa2"_YES",\xe2\x90\x8a\n\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}Gtk.ResponseType.YES)):\xe2\x90\x8a\n\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}super().__init__(title=title,\xe2\x80\xa2parent=parent,\xe2\x80\xa2flags=flags,\xe2\x90\x8a\n\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}buttons=buttons)\xe2\x90\x8a\n\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}self.vbox\xe2\x80\xa2=\xe2\x80\xa2self.get_content_area()\xe2\x90\x8a\n\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}self.hbox\xe2\x80\xa2=\xe2\x80\xa2Gtk.Box(orientation=Gtk.Orientation.HORIZONTAL,\xe2\x90\x8a\nspacing=5)\xe2\x90\x8a\n\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}icon_theme\xe2\x80\xa2=\xe2\x80\xa2Gtk.IconTheme.get_default()\xe2\x90\x8a\n\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}icon\xe2\x80\xa2=\xe2\x80\xa2icon_theme.load_icon("dialog-question",\xe2\x80\xa248,\xe2\x90\x8a\n\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}Gtk.IconLookupFlags.FORCE_SVG)\xe2\x90\x8a\n\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}image\xe2\x80\xa2=\xe2\x80\xa2Gtk.Image.new_from_pixbuf(icon)\xe2\x90\x8a\n\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}self.hbox.pack_start(image,\xe2\x80\xa2False,\xe2\x80\xa2False,\xe2\x80\xa25)\xe2\x90\x8a\n\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}self.vbox.add(self.hbox)\xe2\x90\x8a\n\\u{a0}\\u{a0}\\u{a0}\\u{a0}def\xe2\x80\xa2set_message(self,\xe2\x80\xa2message,\xe2\x80\xa2add_msg=None):\xe2\x90\x8a\n\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}self.hbox.pack_start(Gtk.Label(message),\xe2\x80\xa2False,\xe2\x80\xa2False,\xe2\x80\xa25)\xe2\x90\x8a\n\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}\\u{a0}if\xe2\x80\xa2add_msg\xe2\x80\xa2!=\xe2\x80\xa2None:\xe2\x90\x8a\n\nRun Code Online (Sandbox Code Playgroud)\n在 Visual Studio Code 上,当我将鼠标悬停在这些字符上时,我得到:
\nThe character U+00a0 is not a basic ASCII character.\nRun Code Online (Sandbox Code Playgroud)\n\n如何使用 sed 命令将这些字符替换为普通的“空格”字符?
\n看起来像不间断空格 (U+00A0)的 UTF-8 编码,字节为c2 a0十六进制。像 GNU sed 中的东西sed -e 's/\xc2\xa0/ /g'应该可以用常规空格替换它们。