java - Java代码中用来防止其被复制,粘贴和编译的不可识别字符列表

标签 java compiler-errors character-encoding

这是一个不寻常的问题:我想知道一个可以替换为Java代码的字符列表,以防止其被复制,粘贴和编译。

说明:我正在教授Java类(class),并且必须使用Microsoft Forms进行在线考试。我喜欢使用的一个问题是“成为编译器”(启发于Head First书籍),学生必须在脑海中运行代码并写下输出。问题在于,由于Covid-19,它已经在家中在线,学生可以复制并粘贴代码并运行它。

附言:Microsoft Form仅接受每个问题一个小图像。并接受HTML标签,LaTex标签和markdown标签。

PS:这个想法是受JavaScript Prank / Joke启发的

最佳答案

多亏了list(由pafau提供),我能够找到一些符号:

  • 202F; 0020; (→)NARROW NO-BREAK SPACE→空格
  • 201A; 002C; (,→,)单低9引号→COMMA
  • 037E; 003B; (;→;)希腊问号→SEMICOLON
  • 1400; 003D; (᐀→=)加拿大音节连字符→等号

  • python中的以下代码放入行号并替换这些符号:
    # -*- coding: utf-8 -*-
    
    import sys
    
    text_numbered = ''
    
    with open(sys.argv[1], 'r') as my_file:
        for counter, line in enumerate(my_file, 1):
            text_numbered += '{:3d}'.format(counter) + ' - ' + str(line)
    
    text = text_numbered
    # 202F; 0020; (   →   ) NARROW NO-BREAK SPACE → SPACE
    text = text.replace(' ', ' ')
    # 201A; 002C; ( ‚ → , ) SINGLE LOW-9 QUOTATION MARK → COMMA
    text = text.replace(',', '‚')
    # 037E; 003B; ( ; → ; ) GREEK QUESTION MARK → SEMICOLON
    text = text.replace(';', ';')
    # 1400; 003D; ( ᐀ → = ) CANADIAN SYLLABICS HYPHEN → EQUALS SIGN
    text = text.replace('=', '᐀')
    print(text)
    
    

    不幸的是,我找不到与“拉丁文小写字母”或“拉丁文大写字母”相同的字母序列

    关于java - Java代码中用来防止其被复制,粘贴和编译的不可识别字符列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62072138/

    相关文章:

    java - 缺少 return 语句编译器警告

    haskell - 理解嵌套 Monad 中的 Monadic 绑定(bind)

    c - 简单的 int 到 char[] 转换

    python - 使用 json.dumps() 时出现 UnicodeDecodeError

    C# - PHP 字符编码不匹配

    java - 如何使用带有 Java 的 Selenium WebDriver 获取浏览器名称?

    java - 配置 Gradle + Robolectric

    java - 如何将十六进制整数转换为字符串

    java - Spring在从文件系统加载配置文件时无法解析占位符

    compiler-errors - Latex中缺少\begin {document}