diff --git a/jinja2/compiler.py b/jinja2/compiler.py
index 114ca2d..e27ecc3 100644
--- a/jinja2/compiler.py
+++ b/jinja2/compiler.py
@@ -1297,18 +1297,10 @@
             self.visit(node.arg, frame)
             self.write(']')
             return
-        try:
-            const = node.arg.as_const()
-            have_const = True
-        except nodes.Impossible:
-            have_const = False
         self.write('environment.subscribe(')
         self.visit(node.node, frame)
         self.write(', ')
-        if have_const:
-            self.write(repr(const))
-        else:
-            self.visit(node.arg, frame)
+        self.visit(node.arg, frame)
         self.write(')')
 
     def visit_Slice(self, node, frame):
diff --git a/jinja2/environment.py b/jinja2/environment.py
index 41b0ce7..e10510c 100644
--- a/jinja2/environment.py
+++ b/jinja2/environment.py
@@ -280,9 +280,14 @@
         """Get an item or attribute of an object."""
         if isinstance(argument, basestring):
             try:
-                return getattr(obj, str(argument))
-            except (AttributeError, UnicodeError):
+                attr = str(argument)
+            except:
                 pass
+            else:
+                try:
+                    return getattr(obj, attr)
+                except AttributeError:
+                    pass
         try:
             return obj[argument]
         except (TypeError, LookupError):
diff --git a/jinja2/sandbox.py b/jinja2/sandbox.py
index c041a06..714a0e1 100644
--- a/jinja2/sandbox.py
+++ b/jinja2/sandbox.py
@@ -120,13 +120,18 @@
         is_unsafe = False
         if isinstance(argument, basestring):
             try:
-                value = getattr(obj, str(argument))
-            except (AttributeError, UnicodeError):
+                attr = str(argument)
+            except:
                 pass
             else:
-                if self.is_safe_attribute(obj, argument, value):
-                    return value
-                is_unsafe = True
+                try:
+                    value = getattr(obj, attr)
+                except AttributeError:
+                    pass
+                else:
+                    if self.is_safe_attribute(obj, argument, value):
+                        return value
+                    is_unsafe = True
         try:
             return obj[argument]
         except (TypeError, LookupError):
